🌕 7. 整数反转
2022年6月20日
- algorithm
🌕 7. 整数反转
难度: 🌕
问题描述
解法
class Solution {
public int reverse(int x) {
// 思路:
// 首先保存最高位符号位
// 从 低位开始遍历,每次遇到高位,之前的和 * 10 + 当前位的值
int flag = (x > 0) ? 1 : -1;
// 特殊情况特判
if(x == Integer.MAX_VALUE || x == Integer.MIN_VALUE) {
return 0;
}
if(flag == -1) {
x = -x; // 因为已经排除最小值的干扰,所以取反不会超出正数范围
}
int sum = 0;
while(x != 0) {
int cur = x % 10;
if(flag == -1) {
// 最终结果是负数,那么 sum <= long(max + 1),max 尾号是 7
if(sum > Integer.MAX_VALUE / 10 || (sum == Integer.MAX_VALUE / 10 && cur > 8)) {
return 0;
}
}
if(flag == 1) {
if(sum > Integer.MAX_VALUE / 10 || (sum == Integer.MAX_VALUE / 10 && cur > 7)) {
return 0;
}
}
sum = sum * 10 + cur;
x /= 10;
}
return sum * flag;
}
}