leetcode07.整数反转

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

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

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


示例:

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


分析:

1
不允许使用64位存储,因此需要提前判断

代码

  • C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int reverse(int x) {
int r = 0;
while (x) {
if (r > 0 && r > (INT_MAX - x % 10) / 10) return 0; // r * 10 + x % 10 <= INT_MAX ==> r > (INT_MAX - x % 10) / 10
if (r < 0 && r < (INT_MIN - x % 10) / 10) return 0;// r * 10 + x % 10 >= INT_MIN ==> r < (INT_MIN - x % 10) / 10
r = r * 10 + x % 10;
x /= 10;
}

return r;
}
};

[原题链接](7. 整数反转 - 力扣(Leetcode))

0%