Voici un programme que j'ai construit pour vérifier les mots Palindrome en C ++. Cela ne fonctionne pas de manière habituelle (pour inverser le mot et vérifier s'il est identique), mais il vérifie directement chaque mot du début et de la fin;
Madame, Ada, Hannah, Racecar sont les mots que j'ai essayés et ils semblent être corrects. p> Les résultats sont corrects, je n'ai pas pu trouver de code Comme ça, alors je voulais juste vérifier. p> p>
4 Réponses :
Votre fonction est trop compliquée. Le paramètre doit être un type référencé constant, et la fonction doit renvoyer une valeur booléenne.
ci-dessous Il existe un programme de démonstration qui montre comment la fonction peut regarder à l'aide d'une boucle. P>
true false
Étant donné qu'un palindrome est une chaîne qui est la même lorsque vous inversez, vous pouvez utiliser sortie: < / p> Cette approche évite de créer une chaîne temporaire en marche arrière pour la comparaison. P> Vous pouvez également implémenter une boucle avec deux index, une pour la gauche et pour la droite, incrémentation de la gauche et décrémentant la droite: p> std :: égal code> et un itérateur inversé comme celui-ci
Oui, votre logique est correcte et donnera les bons résultats. P>
Je suis d'accord avec les gens que cela a quelque chose pour examen de code, mais votre code a l'air correct. ... et pourquoi ne pas jeter plus de versions Palindrome plus? Voici un fonctionnement avec des itérateurs afin que vous puissiez vérifier les gammes de tout type avec un opérateur d'égalité: et une doublure one-liner: p>
Vous voudrez peut-être poster ceci à codereview.stackexchange.com à la place.
Je pense que vous devriez iTERE PAS sur tous les personnages, mais seulement plus de la moitié d'entre eux, c'est-à-dire pour (int i = 0; i <= index / 2; i ++) code>. Au lieu de compter les caractères égaux, vous pourriez quitter (FALSE) dès que n'importe quelle paire n'est pas égale.
De plus, vous pouvez vérifier si
si (texte [i]! = Texte [index-i]) renvoie false; code> et se débarrasser de
x code>.
Je ne retournerais pas un
std :: chaîne code> mais plutôt un
bool code>, il est beaucoup plus facile de convertir un
bool code> à
chaîne code > En cas de besoin que de convertir
"vrai" code> /
"false" code> à un
bool code> au cas où vous en auriez besoin.
@Mansoor avait la même idée, mais le type de retour est
chaîne code>
Appartient à codereview.stackexchange.com
Bienvenue dans le débordement de la pile! Si vous croyez que le code fonctionne correctement, envisagez de présenter votre travail (avec ses tests d'unités) de manière plus complète sur avis de code . Vous aurez probablement des suggestions sur la rendant plus efficace, plus facile à lire et mieux testé. Avant de le faire, assurez-vous de lire Guide de la revue de codes pour les utilisateurs de pile de dépassement d'abord, car certaines choses se font différemment. là-bas - par exemple Les titres de question devraient simplement dire ce que le code fait i>, comme la question est toujours: «Comment puis-je améliorer cela?».