7. Reverse Integer
解法很简单,我是用一个stack存储各个digit。注意int的各种溢出就好了。
应该有更好的解法。
public class Solution {
public int reverse(int x) {
if (x == 0)
return 0;
// 注意int的各种溢出
Deque<Integer> stack = new LinkedList<Integer>();
long tmp = Math.abs((long) x); // 如果Integer.MIN_VALUE直接abs就会溢出,所以转成long
while (tmp >= 10) {
stack.push((int) (tmp % 10));
tmp = tmp / 10;
}
stack.push((int) tmp);
//System.out.println(stack);
long res = 0, i = 0;
while (stack.size() > 0) {
res += stack.pop() * Math.pow(10, i);
i++;
}
// overflow直接返回0
if (res > Integer.MAX_VALUE || (res * -1) < Integer.MIN_VALUE)
return 0;
if (x < 0)
return (int) (res * -1);
else
return (int) res;
}
}