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;
    }
}

results matching ""

    No results matching ""