解題心得
反轉數字本身很簡單。
只是怎麼處理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; } };
沒有留言:
張貼留言