我的第一道算法题:LeetCode-7:整数反转

题目描述:给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。

思路: 不考虑转成字符串反转等方面,可以想到取模运算,再进行进位还原即可。如123先对10进行取模,得到3,再对12(除运算得到123/10)取模得到2,3进位加上2可得32(3*10+2),这样继续操作。

代码:

class Solution {
    public int reverse(int x) {
        // [-2147483648 , 2147483647]
        int revNum = 0; //定义反转数的初值
        while(x != 0){
            int last = x % 10; //求末位数字
            //注意!!!一定先判断
            if(revNum > 214748364 || (revNum == 214748364 && last > 7)){ //判断正数
                return 0;
            }
            if(revNum < -214748364 || (revNum == -214748364 && last < -8)){ //判断负数
                return 0;
            }
            revNum = revNum *10 + last;//进位
            x = x / 10;
        }
        return  revNum;
    }
}

记录一下自己,希望可以坚持下去——一个考研复试被刷的“loser”,二战必胜!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值