leetcode 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
解题思路:
题目需要判断反转后的数字是否超过 32 位有符号整数的范围 [-231, 231 - 1],例如 x=2123456789反转后res=9876543212 > 231-1 = 2147483647,超过了 32 位有符号整数的范围。因此我们需要在「推入」数字之前,判断是否满足-231 ≤ res?10+i ≤ 2 31 - 1若该不等式不成立则返回 0。
代码如下:
class Solution {
public int reverse(int x) {
int res = 0;
while (x != 0) {
if (res< Integer.MIN_VALUE /10 || res > Integer.MAX_VALUE / 10) {
return 0;
}
int i = x % 10;
x /= 10;
res = res * 10 + i;
}
return res;
}
}
|