【问题描述】
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
【思路】
此题看似简单,但是坑较多。
整数反转问题较简单,但是需要处理溢出问题。
将结果保存为long型,如果大于整数最大值或者小于负数最小值时返回0
【code】
public class Solution {
public int reverse(int x) {
if (x == 0) {
return 0;
}
int sign = 1;
if (x < 0) {
sign = -1;
}
long result = 0;
long t = Math.abs((long) x);
while (t != 0) {
result = result * 10 + t % 10;
;
t /= 10;
}
if ((sign == 1 && result > Integer.MAX_VALUE)
|| (sign == -1 && sign * result < Integer.MIN_VALUE)) {
return 0;
}
return sign * (int) result;
}
}