整数反转(Integer.MAX_VALUE和Integer.MIN_VALUE的使用)

Integer.MAX_VALUE = 2^31-1=2147483647

Integer.MIN_VALUE = -2^31=-2147483648

一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设我们只用int类型 不考虑使用long类型

public int reverse(int x) {
        int num = 0;
        int res = 0;
        while (x!=0){
            num = x%10;
            x=x/10;

            /*
            判断res是否超过int类型最大取值范围,要注意一下下这种特殊情况(前面各位相等但是个位数超过范围)
            res==Integer.MAX_VALUE/10 && num>Integer.MAX_VALUE%10)            

            这里要注意要先进行判定,运算后的结果会不会超过范围再进行运算
            
             */
            // res = res*10 + num;如果在这里运算,可能会导致判断和运算的num值不同而出错
            if (res>Integer.MAX_VALUE/10 ||
                    (res==Integer.MAX_VALUE/10 && num>Integer.MAX_VALUE%10)){
                return 0;
            }
            if (res<Integer.MIN_VALUE/10 ||
                    (res==Integer.MIN_VALUE/10 && num < Integer.MIN_VALUE%10)){
                return 0;
            }
            res = res*10 + num;
        }
        return res;
    }


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值