Reverse Integer (E)
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
Example 3:
Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,231−1][-2^{31}, 2^{31}-1][−231,231−1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
题意
给定一个32位有符号整数,将其各位倒置后输出,如果倒置后超出int范围溢出则输出0。
思路
问题的关键在于对溢出数的处理。溢出后再与最值比较不可取,因此通过与最值/10比较来判断最后会不会溢出。int范围为[-2147483648, 2147483647]。
代码实现
class Solution {
public int reverse(int x) {
int res = 0;
while (x != 0) {
int n = x % 10;
if ((res > Integer.MAX_VALUE / 10)
|| (res == Integer.MAX_VALUE / 10 && n > 7)) {
return 0;
} else if ((res < Integer.MIN_VALUE / 10)
|| (res == Integer.MIN_VALUE / 10 && n < -8)) {
return 0;
} else {
res = 10 * res + n;
}
x /= 10;
}
return res;
}
}