leetcode-7:Reverse Integer

很简单的题目,思路:
x = a1a2a3a4a5a6….an
则得到的反转数字为
result = an*10^n + a(n-1) * 10^(n-1) + …….a1 = (((an*10+a(n-1))*10 + a(n-2))*10…….) + a1
1.初始化对应变量和常量;
2.对10求余得到当前循环中原数的低位,把临时的结果乘10并加上该低位作为新的临时结果,不断循环该步骤,直到溢出或者已经遍历所有数位;
3.返回结果;
源码:

class Solution {
public:
    int reverse(int x) {
        int highestHead = 214748364;
        int highestTail = 7;
        int locs = 10;
        int lowHead = -214748364;
        int lowTail = -8;

        int divided = x;
        int result = 0;
        int locsNum = 0;
        int temp = 0;
        int flag = divided>0? 1 : 0;
        int head= 0;

        while(divided!=0){

            locsNum++;
            temp = divided%10;
            if(locsNum>=locs){
                if(flag && (result>highestHead || (result == highestHead  && temp >highestTail)) ) return 0;
                if(flag==0 && (result < lowHead || (result == lowHead  && temp <lowTail)))  return 0;
            }

            result = result * 10 + temp;
            divided /= 10;
        }

        return result;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值