Le code suivant est pour un exercice de codage sur Leetcode - Je vérifie si un nombre est un palindrome ou non (sans le convertir en une chaîne). Je ne parviens pas à comprendre pourquoi ce code échoue pour des chiffres comme 11, 22, 33 etc.Vérifiez si un nombre est un palindrome - échoue pour 11,22 etc.
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
Vous modifiez 'x' plusieurs fois dans votre boucle, puis vous essayez de l'utiliser dans votre comparaison par la suite. Cela ne retournera jamais "True" pour les nombres à plusieurs chiffres. – Phylogenesis
@Phylogenesis C'est aussi vrai mais pas assez. OP, exécutez le code dans votre esprit pour 22 .. Ne remarquez-vous rien de mal avec cela? comme le 'reverse = (reverse * 10) + digit' ou le' x = x/10'? –
comme c'est idiot de ma part! Merci d'avoir éclairci ça – user1528508