2016-11-15 37 views
0

下面的代码是针对Leetcode上的编码练习 - 我检查一个数字是否是回文(不将它转换为字符串)。我无法理解为什么像11号,22,33等检查一个数字是否是回文 - 11,22等失败

def isPalindrome(self, x): 
    #x is an integer 
    digit = 0 
    reverse = 0 

    #Single digit numbers will be palindromes 
    if x >= 0 and x < 10: 
     return True 

    #fetch individual digits and build the reverse number  
    while x > 0: 
     digit = x % 10 
     reverse = (reverse * 10) + digit 
     x = x/10 

    if x == reverse: 
     return True 
    else: 
     return False 
+2

您在循环中反复修改'x',然后尝试在之后的比较中使用它。这永远不会为多位数字返回“真”。 – Phylogenesis

+0

@Phylogenesis这也是事实,但还不够。 OP,在你心目中运行代码22 ..你没有注意到它有什么问题吗?像'reverse =(reverse * 10)+ digit'还是'x = x/10'? –

+0

我有多傻!感谢您清除那个 – user1528508

回答

0

这是一个更容易将其转换为一个字符串,并检查它的方式验证码失败。我使用[::-1]来反转字符串,然后将其与原始字符进行比较。

def isPalindrome(x): 
    if str(x) == str(x)[::-1]: 
     return True 
    else: 
     return False 

for x in range(100): 
    print(x, isPalindrome(x)) 

如果你也想测试它实际上是一个数,使用x.isdigit(),这将返回True为整数。