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