leetcode整数反转,js实现

leetcode整数反转,js实现

  • 题目
  • 思路
  • 代码

题目

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

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

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

思路

  1. 整数反转,我们可以采用从后面往回读
  2. 读取最后一位 digit = x % 10;
  3. 拼接最新结果 result = result * 10 + digit;
  4. 边界条件:
    1. x = 0 直接返回
    2. x 大于0时, 有result * 10 + digit <= 2147483647
    3. x小于0时,有result * 10 + digit >= -2147483648

代码

var reverse = function(x) {
    const MAX = 2147483647;
    const MIN = -2147483648;
    let digit = 0;
    let result = 0;
    if (x === 0) return x
    // 反转,从最后以为开始取,取出来作为新数字的第一位
    while(x > 0) {
        // 求10的余,得到当前最后一位的值
        digit = x % 10;
        // 移除最后一位
        x = Math.floor(x / 10);
        // 将最新得到的位数拼到新数字中
        // 判断范围
        if(result > (MAX - digit) / 10) {
            return 0
        }
        result = result * 10 + digit;
    }
    while (x < 0) {
        digit = x % 10;
        // 移除最后一位
        x = Math.ceil(x / 10);
        // 将最新得到的位数拼到新数字中
        // 判断范围
        if(result < MIN / 10 - digit / 10) {
            return 0
        }
        result = result * 10 + digit;
    }
    return result;
};

你可能感兴趣的:(JavaScript,leetcode,算法类,javascript,leetcode,算法)