Version: Next

7.整数反转

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;
}