132 votes

Comment puis-je vérifier si un nombre est un palindrome ?

Comment puis-je vérifier si un nombre est un palindrome ?

N’importe quelle langue. N’importe quel algorithme. (sauf l’algorithme de faire le numéro de chaîne et puis inverser la chaîne).

274voto

smink Points 39640

Pour n’importe quel num donné :

Si n == rev num est un palindrome :

135voto

Dan Dyer Points 30082

C’est l’un des problèmes Project Euler. Quand je l’ai résolu en Haskell, j’ai fait exactement ce que vous suggérez, convertir le nombre en une chaîne. Ensuite, il est trivial de vérifier que la chaîne est un pallindrome. Si elle fonctionne assez bien, alors pourquoi s’embêter rendant plus complexe ? Un pallindrome est une propriété lexicale plutôt que mathématique.

24voto

Mark Ransom Points 132545
def ReverseNumber(n, partial=0):
    if n == 0:
        return partial
    return ReverseNumber(n / 10, partial * 10 + n % 10)

trial = 123454321    
if ReverseNumber(trial) == trial:
    print "It's a Palindrome!"

22voto

jiaji.li Points 366

Au-dessus de la plupart des réponses ayant un problème trivial, c’est que la variable int pourrait éventuellement déborder.

Se référer à http://leetcode.com/2012/01/palindrome-number.html

14voto

Robert Gamble Points 41984
int is_palindrome(unsigned long orig)
{
  unsigned long reversed = 0, n = orig;

  while (n > 0)
  {
    reversed = reversed * 10 + n % 10;
    n /= 10;
  }

  return orig == reversed;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X