7. 整数反转

82 阅读1分钟

好青年 | leetcode 打卡群 - 打卡记录第 六 天

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。   示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0
/**
 * @param {number} x
 * @return {number}
 */
var reverse = function (x) {
    // 用数学的方式,弹出,推入
    // 弹出末尾--》x % 10, 推入 ==》res * 10 + x % 10
    let res = 0;
    while (x) {
        // 反转
        res = res * 10 + x % 10;
        // 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。
        if (res > Math.pow(2, 31) - 1 || res < Math.pow(-2, 31)) return 0;
        // ~~取反两次,去掉小数部分
        x = ~~(x / 10);
    }
    return res;
};