题目描述: 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。
示例1:
1 | 输入:x = 123 |
示例2:
1 | 输入:x = -123 |
示例3:
1 | 输入:x = 120 |
示例4:
1 | 输入:x = 0 |
题解方法一:
解题思路
- 为对当前数取对 10 的余数,再一项项填入res尾部,即可完成 int 翻转。
- 边界情况处理
1、int 取值范围为 [-2^{31}, 2^{31} - 1],如果翻转数字溢出,则立即返回 0 。
2、将数字处理成绝对值,则判断是否溢出,直接判断返回值是否大于最大边界值即可。
代码实现如下:1
2
3
4
5
6
7
8
9
10
11var 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():
函数总是返回小于等于一个给定数字的最大整数。