【我的leetcode日记】7. 整数反转——js

113 阅读1分钟

仅记录自己刷题过程,顺便督促自我学习~

来源链接:leetcode.cn/problems/re…

中等

题目描述

给你一个 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

提示:

  • 231-2^{31} <= x <= 2312^{31} - 1

我的实现

注意边界的判断,否则不能完全通过。

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
let res=0;
    if(x>=0){
        res= x.toString().split('').reverse().join('');
    }else{
       res=  x.toString().slice(1).split('').reverse().join('')*(-1)
    }

        if (res > 2 ** 31 - 1 || (res < 0 && res < (-2) ** 31)) return 0;
        return res;
};

官方实现

leetcode.cn/problems/re…

var reverse = function(x) {
    let rev = 0;
    while (x !== 0) {
        const digit = x % 10;
        x = ~~(x / 10);
        rev = rev * 10 + digit;
        if (rev < Math.pow(-2, 31) || rev > Math.pow(2, 31) - 1) {
            return 0;
        }
    }
    return rev;
};

“~~”表示向下取整