LeetCode Reverse Integer

這個是逆轉32位的int值,看了例子就應該很清楚要幹什麼了


首先是正負數,這個比較好實現的,用正數進行計算,如果是負數,最後加上負號就好了

其次就是溢出的判斷,在溢出裏首先是知道最大的int的值是0x7fffffff,然後轉換的過程中,先取判斷這個轉換可不可以做,也就是判斷是否會溢出,然後再進行後面的操作

之前看別的博客裏有人問爲什麼ans*10+x%10>max_int不可以,我覺得是因爲前面的已經溢出了,再判斷結果就會是錯的,代碼也很短


class Solution {
public:
    int reverse(int x) {
        int y = 0;
       if(x<0)
          y = -x;
        else y = x;
        int max_int = 0x7fffffff;
        int ans = 0;
        while(y>0)
        {
            if(ans>((max_int-y%10)/10))
                return 0;
            else 
            {
                ans = ans*10+y%10;
                y = y/10;
            }
        }
        return x>0?ans:-ans;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章