2016-11-15 3 views
0

다음 코드는 Leetcode의 코딩 연습용 코드입니다 - 숫자가 회귀 식인지 아닌지 (문자열로 변환하지 않고) 확인하고 있습니다. 이 코드 등 11 같은 숫자, 22, 33숫자가 palindrome인지 확인하십시오 - 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'를 반복적으로 수정하고 나중에 비교할 때 사용하려고합니다. 다중 숫자의 경우 True를 반환하지 않습니다. – Phylogenesis

+0

@Phylogenesis 또한 사실이지만 충분하지 않습니다. 영업, 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를 반환합니다.