整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
1
2
2
示例 2:
输入:x = -123
输出:-321
1
2
2
示例 3:
输入:x = 120
输出:21
1
2
2
示例 4:
输入:x = 0
输出:0
1
2
2
提示:
- -231 <= x <= 231 - 1
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-integer 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答:
- 解法一
/**
* @param {number} x
* @return {number}
*/
// 暴力拆解法
var reverse = function(x) {
if(x===0) return x;
let isPositive = x>0;
let formatX = String(Math.abs(x)).split('').reverse().join('');
if(formatX > 2**31 - 1 || formatX < -(2**31)) return 0;
return isPositive ? formatX : Number(formatX)*-1;
};
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 解法二
/**
* @param {number} x
* @return {number}
*/
// 取余拼接法
var reverse = function(x) {
let res = 0;
let isPositive = x > 0;
x = Math.abs(x);
while(x>0) {
res += `${x%10}`;
x = ~~(x/10)
}
if(res > 2**31 - 1 || res < -(2**31)) return 0;
return isPositive ? +res : +res * -1;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
在Github上编辑此页 (opens new window)
上次更新: 3/27/2021, 11:24:46 AM