题目描述: 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。

示例1:

1
2
输入:x = 123
输出:321

示例2:

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

示例3:

1
2
输入:x = 120
输出:21

示例4:

1
2
输入:x = 0
输出:0

题解方法一:

解题思路

  • 为对当前数取对 10 的余数,再一项项填入res尾部,即可完成 int 翻转。
  • 边界情况处理
    1、int 取值范围为 [-2^{31}, 2^{31} - 1],如果翻转数字溢出,则立即返回 0 。
    2、将数字处理成绝对值,则判断是否溢出,直接判断返回值是否大于最大边界值即可。

代码实现如下:

1
2
3
4
5
6
7
8
9
10
11
var reverse = function(x) {
let y = Math.abs(x);
let res = 0;
const of = Math.pow(2, 31) - 1;
while (y !== 0) {
res = res * 10 + y % 10;
if (res > of ) return 0;
y = Math.floor(y / 10);
}
return x > 0 ? res : -res;
};


总结:大功告成✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️

参考链接:

  • 整数反转-中等
    JS知识扩展知识扩展Math.floor(): 函数总是返回小于等于一个给定数字的最大整数。