7.Reverse Integer
起初没注意到下方的注释,理解错误了意思。
注释的意思是“假设处理这个问题是在智能存储32位证书的环境中,有符号整型的范围是,当输入超过这个范围返回0. ”
以下贴出我的代码:
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
if x < pow(-2,31) or x >(pow(2,31)-1):
return 0
y=str(abs(x))
y=int(y[::-1])
return (y if x>0 else -y)
运行结果:
感觉很对,要成了!!马上,这个“神奇的数字”出现了 1534236469 。我的程序居然不能得到正确结果??
Why?Why?Why?
我用自己仅存的数学知识,打开了电脑的计算器,经过严密的键盘按键输入运算,发现 。也就是说,程序没问题,leetcode答案也没问题(假设在只能存储32位有符号类型下,而python是无限制存储)。
按理说,这个问题已经结束了,我的代码没有问题,嗯,对,没有问题。
然后真正的问题现在才来,这也是我这次要做记录的原因,为什么有个Solution中的python代码可以运行????
Solution中不愿被透露姓名的某提供的python代码:
class Solution(object):
def reverse(self, x):
b = 2 ** 31
neg_b = -1 * b
rev = 0
if x > 0:
while x != 0:
digit = x % 10
x //= 10
rev = rev * 10 + digit
else:
x = abs(x)
while x != 0:
digit = x % 10
x //= 10
rev = rev * 10 + digit
rev *= -1
if rev > b or rev < neg_b:
return 0
return rev
暂时还没有发现,为什么他的代码可以用,哪位大哥大侠提供下意见。