整数反转
AprilTong 1/4/2022 简单算法
# 整数反转
- 描述
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
- 例子
输入:123
输出:321
输入:-123
输出:-321
输入:120
输出:21
输入: 0
输出: 0
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 方法一
通过数组的反转方法实现
var reverse = function(x) {
// 极值
let MIN = -Math.pow(2, 31)
let MAX = Math.pow(2, 31) - 1
let temp =
x > 0
? String(x)
.split('')
.reverse()
.join('')
: String(x)
.slice(1)
.split('')
.reverse()
.join('')
let result = x > 0 ? parseInt(temp) : 0 - parseInt(temp)
// 边界值处理
if (result >= MIN && result <= MAX) {
return result
}
return 0
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 方法二
var reverse = function(x) {
// 极值
let MIN = -Math.pow(2, 31)
let MAX = Math.pow(2, 31) - 1
// 绝对值
let absCount = Math.abs(x)
let num = 0
// 遍历生成数字
while (absCount !== 0) {
// 从最后一位开始取值拼成新的数
num = (absCount % 10) + num * 10
absCount = Math.floor(absCount / 10)
}
num = x > 0 ? num : num * -1
// 边界值处理
if (num >= MIN && num <= MAX) {
return num
}
return 0
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20