題目連結:
leetcode.com/problems/reverse-integer
我的程式碼如下:
class Solution:
def reverse(self, x: int) -> int:
if x > 0:
return int(str(x)[::-1])
if x == 0:
return 0
if x < 0:
return (int(str(-x)[::-1])*-1)
錯誤訊息為
Input
1534236469
Output
9646324351
Expected
0
WA
為麼正確答案是0?
不是應該是9646324351嗎?
求救大佬
我是剛學 C 的小菜鳥
我的理解是,當 reverse 的值即將超過 INT_MIN (-2^31) 及 INT_MAX (2^31-1) 會產生溢位而產生錯誤的值,我會在 Reverse 的值即將溢位時判斷是否超過,如果會超過就回傳 0。
我不確定 python 溢位後會有甚麼後果,但看來是會自動修正。那這裡我會用條件判斷,
當
return value > reverse 的 INT_MAX OR return value < reverse 的 INT_MIN
時
return 0;
給你參考看看~