我正试图解决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