LeetCode 7. Reverse Integer

https://leetcode.com/problems/reverse-integer/

这题比较麻烦的地方在对溢出的判断,一开始用了long long int来判断有没有溢出,不过太慢了。

后来又改用计算最大int范围,然后除以当前数字,如果小于10则在下一步*=10操作后则会溢出。

然而太慢了,直接和最大值/10的值进行比较,如果大于直接搞掉。不过有个坑,-2147483648的负数还是2147483648,特判了一下,感觉应该是有不用特判的算法。

class Solution {
public:
    int reverse(int x) {
        int num=0,f=0;
        int bit=2147483647;
        if(x<0)
        {
            x=-x,f=1;
            if(x==-x)
                return 0;
        }
        while(x)
        {
            if(num>214748364)
                return 0;
            num*=10;
            num+=x%10;
            x/=10;
        }
        if(f)
            num=-num;
        return num;
    }
};

 

posted @ 2016-12-04 22:15  Luke_Ye  阅读(120)  评论(0编辑  收藏  举报