我正試圖解決leetcode.com中的一個練習,它涉及signed 32bit integers
。反向32位整數
的任務是:
返回簽署的32位整數的倒數,並返回0,如果它溢出了32位有符號整數的範圍。
一個32位寄存器可存儲32個不同的值。可以存儲在32位中的整數 值的範圍取決於所使用的整數 表示形式。對於兩個最常見的表示, 範圍爲0到4,294,967,295(2^32 - 1),表示爲 (無符號)二進制數,-2,147,483,648(-2^31)到 2,147,483,647(2^31 - 1 )表示爲二的補碼。
所以,如果我的理解是正確的,我應該間隔0 to (2^31)-1
和(-2^31) to 0
之間的測試,否則,返回0
。
這裏是我的代碼:
def reverse_int(nums):
a = str(nums)
if 0 < nums <= (1 << 31)-1:
return int(a[::-1])
elif (-1 << 31) <= nums < 0:
return -(int(a[:-len(a):-1]))
else:
return 0
這裏是我的問題: 當我測試用的網站上我的代碼:
nums = 1534236469 # Fail
nums = 1463847412 # Success
nums = 9000000 # Success
爲什麼我當前的代碼失敗,1534236469
?是不是1534236469
的範圍是32 bit signed integers
?我錯過了什麼?
你會得到什麼輸出失敗的情況? – Zeokav
例如,對於網站上的'1534236469',它應該返回0.這意味着'1534236469'溢出了32位有符號整數的範圍。 –
但它不溢出。 – Zeokav