2021年7月8日 星期四

Reverse Integer

解題心得

反轉數字本身很簡單。

只是怎麼處理overflow卡住。原本想說一開始先檢查或者翻轉後再檢查,但是有可能「原本數字不會overflow,但一翻轉就會」的情況。例如:123456789。
也因此只能在翻轉的過程中,一邊做一邊判斷。

判斷是否會overflow,就是乘以十倍後會不會超出214748364。參考int的範圍。
不過我的寫法有點取巧啦,剛好測資沒有測邊界值才AC吧~

class Solution {
public:
    int reverse(int x) {
        int ans = 0;
        while (x != 0)
        {
            if (abs(ans) > 214748364)
                return 0;
            ans = ans * 10 + x % 10;
            x /= 10;
        }
        return ans;
    }
};

沒有留言:

張貼留言