整数反转

1/4/2022 简单算法

# 整数反转

  • 描述

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围  [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

题目链接 (opens new window)

  • 例子
输入:123
输出:321

输入:-123
输出:-321

输入:120
输出:21

输入: 0
输出: 0
1
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

# 方法二

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
上次更新: 1/4/2022, 4:30:38 PM