LeetCode 7. 整数反转

596 阅读1分钟

leetcode-cn.com/problems/re…

思路:注意正负数、边界

public int reverse(int x) {
    if (x == 0 || x == -2147483648) {
        return 0;
    }
    Queue<Integer> queue = new LinkedList<Integer>();
    int x1 = Math.abs(x);
    int r1 = x1 / 10;
    int r2 = x1 % 10;
    while (r1 > 0) {
        queue.offer(r2);
        r2 = r1 % 10;
        r1 = r1 / 10;
    }
    queue.offer(r2);
    int reverseVal = 0;
    int max = Integer.MAX_VALUE / 10;
    while (!queue.isEmpty()) {
        if (reverseVal > max) {
            reverseVal = 0;
            break;
        }
        reverseVal = reverseVal * 10 + queue.poll();
    }
    return reverseVal * (x1 / x);
}