Version: Next
7.整数反转
难度 简单
给你一个 32 位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1]
,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
-231 <= x <= 231 - 1
逐位反转
- 反复记录数字的
个
位
- 将数字
%
10,获得当前个位数
,一开始直接赋值给 res- 将数字
/
10- 重复,获得第二个
个位
res
=(res * 10)
+个位
- 判断反转结果是否溢出
- 每反转一位都进行判断
- 方法1:使用比当前 res 数据类型更大的数据类型,就可以把握 res 是否溢出
- 方法2:将 res - 个位,然后再 res / 10,也就是进行一次逆运算,如果逆运算的结果与之前的 res 相同,说明没有溢出
public int reverse(int x) {
int res = 0;
int lastRes = 0;
while (x != 0) {
lastRes = res;
res = (res * 10) + x % 10;
// 逆运算检查是否溢出
if (((res - x % 10) / 10) != lastRes) return 0;
x /= 10;
}
return res;
}