【Leetcode】7.Reverse Integer

7.Reverse Integer

起初没注意到下方的注释,理解错误了意思。

注释的意思是“假设处理这个问题是在智能存储32位证书的环境中,有符号整型的范围是[-2^{^{31}},2^{^{31}}-1],当输入超过这个范围返回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?

我用自己仅存的数学知识,打开了电脑的计算器,经过严密的键盘按键输入运算,发现  1534236469 \epsilon \left [-2^{^{31}},2^{^{31}}-1]。也就是说,程序没问题,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 

暂时还没有发现,为什么他的代码可以用,哪位大哥大侠提供下意见。

猜你喜欢

转载自blog.csdn.net/qq_25863199/article/details/88374670
今日推荐