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
分析:
先用double存储反转之后的结果就可以避免越界问题,转完之后再判断溢出。
C++:
class Solution {
public:
int reverse(int x) {
double res = 0;
while (x != 0) {
res = res * 10 + x % 10;
x /= 10;
}
if (res > pow(2, 31) - 1 || res < -pow(2, 31)) {
return 0;
}
return (int) res;
}
};
Java:
public int reverse(int x) {
double res = 0;
while (x != 0) {
res = res * 10 + x % 10;
x /= 10;
}
if (res < Integer.MIN_VALUE || res > Integer.MAX_VALUE) {
return 0;
}
return (int) res;
}