leetcode整数反转,js实现

19 篇文章 0 订阅
5 篇文章 0 订阅

leetcode整数反转,js实现

题目

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

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

思路

  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;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值