2016-11-15 87 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爲整數。