2.Reverse Integer

题目:反转整数。
输入 123,输出 321;
输入 -23,输出 -23;
注意:int 的范围 [-232, 231-1],如果超出范围则返回 0。

注意:需要计算反转后的数是否超过了 int 的范围。
边界值计算方法参考:
1.假如 200 为最大值;
2.205 = 20 * 10 + 5 如果205是溢出的, 那么 20 肯定大于 200 / 10 ;
3.如果 20 > 200 / 10,那么 205 是溢出的;
4.如果 20 == 200/10,此时如果 pop > 5 则为溢出的;
5.将200更换为 231-1 对应的值,同样最小值也是这么计算。

解题思路:通过 %(取余)来获取个位上的数字,数字 / (除以)10,就获得了新的个位上的数。

public int reverse(int x) {
    int rev = 0;
    while(x != 0) {
        int pop = x % 10;
        x /= 10;
        if(rev > Integer.MAX_VALUE / 10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) {
            return 0;
        }
        if(rev < Integer.MIN_VALUE / 10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) {
             return 0;
        }
        rev = rev * 10 + pop;
    }
    return rev;
}

你可能感兴趣的:(2.Reverse Integer)