Comment vérifier si la représentation binaire d'un entier est un palindrome?
Comment vérifier si la représentation binaire d'un entier est un palindrome?
- Est 10001 un palindrome? Ou a-t-elle sur un octet 00100100? Ou faut-il avoir pour être un int- 00000000 00000001 10000000 00000000?
- oui comme ce 10001.
- Donc
0110
n'est pas un palindrome, parce que c'est vraiment110
, droit? Ce qui implique que tous les non-zéro palindromes sont impairs.
Vous devez vous connecter pour publier un commentaire.
Puisque vous n'avez pas spécifié d'un langage pour le faire, voici le code en C (pas le plus efficace de mise en œuvre, mais il devrait illustrer le point):
MODIFIER fixe pour votre 10001 chose.
Espérons que correct:
Créer un 256 lignes graphique contenant un char et c'est peu inversé char.
4 octets entier,
prendre le premier char, regarder il sur le graphique, de comparer la réponse à la dernière char de l'entier.
si elles diffèrent, il n'est pas palindrome, si ce sont les mêmes répéter l'opération avec le milieu de la station.
si elles diffèrent, il n'est pas palindrome le reste il est.
Beaucoup de belles solutions. Permettez-moi d'ajouter un qui n'est pas le plus efficace, mais très lisible, à mon avis:
Les éléments suivants doivent être adaptables à tout type non signé. (Les opérations sur les bits sur les types signés ont tendance à se heurter à des problèmes.)
J'ai toujours un palindrome fonction qui fonctionne avec les Chaînes, qui renvoie vrai si c'est faux dans le cas contraire, par exemple, en Java. La seule chose dont j'ai besoin est quelque chose comme:
Une version générique:
Je pense que la meilleure approche est de commencer par les extrémités et de travailler votre chemin vers l'intérieur, c'est à dire comparer le premier et le dernier bit, le deuxième bit et la seconde à la dernière bits, etc, qui ont O(N/2) où N est la taille de l'int. Si, à tout moment de vos paires ne sont pas les mêmes, il n'est pas un palindrome.
Parfois il est bon de signaler une panne de trop;
Il y a beaucoup de réponses ici sur la façon évidente de le faire, par l'analyse sous une forme ou une autre de la séquence de bits. J'ai eu à me demander, si, si, il y avait tout de la solution mathématique? Existe-il des propriétés de palendromic nombres que l'on peut en profiter?
Donc j'ai joué avec les maths un peu, mais la réponse devrait vraiment avoir été évident depuis le début. Il est trivial de montrer que tous les binaires palindromique nombre doit être impair ou égal à zéro. C'est à peu près aussi loin que j'ai pu avoir avec elle.
Un peu de recherche a pas montré une telle approche pour les décimales palindromes, donc c'est soit un problème très difficile ou pas résoluble par l'intermédiaire d'un système formel. Il pourrait être intéressant de le prouver...
Je sais que cette question a été posté il y a 2 ans, mais j'ai une meilleure solution qui ne dépend pas de la taille de mot et tous,
En JAVA, il existe un moyen facile si vous comprenez base binaire airthmetic, voici le code: