2017年6月20日 星期二

leetcode-7 Reverse Integer

題意: 給定一32bit帶正負號整數,將其反轉後輸出,若反轉後產生溢位,則輸出0


解題思路: 首先要先知道32-bit signed integer的範圍是 -2147483648 ~ 2147483647,接下來就可進行反轉,反轉再進行溢位判定即大功告成,複雜度為O(n),其中n為輸入數字位數


C++ code 如下:

class Solution {
public:
    int reverse(int x) {
        if(x==-2147483648)
            return 0;
        long long y=0;
        int count=0;
        int c=x;
        if(x<0)
            c=-1*x;
            
        while(c)
        {
            y=y*10+(c%10);
            c/=10;
        }
        
        if(x>0)
        {
            if(y>2147483647 )
                return 0;
            else
                return(int)y;
        }
        else
        {
            if(y>2147483648 )
                return 0;
            else
                return-(int)y;
        }
        
    }
};

沒有留言:

張貼留言