java练习(35)
ps:题目来自力扣
整数反转
给你一个 32 位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1]
,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
class Solution {
public int reverse(int x) {
int reversed = 0;
while (x != 0) {
// 取出 x 的最后一位数字
int digit = x % 10;
// 将 x 去掉最后一位数字
x /= 10;
// 在添加新数字之前检查是否会溢出
if (reversed > Integer.MAX_VALUE / 10 || (reversed == Integer.MAX_VALUE / 10 && digit > 7)) {
return 0;
}
if (reversed < Integer.MIN_VALUE / 10 || (reversed == Integer.MIN_VALUE / 10 && digit < -8)) {
return 0;
}
// 将取出的数字添加到 reversed 中
reversed = reversed * 10 + digit;
}
return reversed;
}
}