检查一个数字是否是回文 - 11,22等失败

时间:2016-11-15 16:23:32

标签: python integer palindrome

以下代码用于Leetcode的编码练习 - 我正在检查数字是否是回文(不将其转换为字符串)。我无法理解为什么这个代码对11,22,33等数字失败了。

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

1 个答案:

答案 0 :(得分: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