LeetCode

LeetCode-07 正数反转

nkul · 9月4日 · 2020年 47次已读

对于整数x,在C++中不管是正数还是负数,x%10,都是取最后一位,x/10都是删除最后一位,递归就可以倒序把整数每位分离出来!

分离出来的逆序如(1234,分离出4 3 2 1),组合成4321的方式为:

res  = 0;
res  = res*10 + 4;//4
res  = res*10 + 3;//43
res  = res*10 + 2;//432
//参考秦九韶算法

于是可以写出代码为:

class Solution {
public:
    int reverse(int x) {
        int res=0;
        while(x){
            //溢出判断
            //res * 10 + x % 10 > INT_MAX;
            //res * 10 + x % 10 < INT_MIN;
            if(res> 0 && res > (INT_MAX - x%10)/10) return 0;
            if(res< 0 && res < (INT_MIN - x%10)/10) return 0;
            res = res * 10 + x % 10;
            x= x/10;
        }
        return res;
    }
};


0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!