Maison > Java > javaDidacticiel > le corps du texte

Chaînes : vérification des palindromes

Susan Sarandon
Libérer: 2024-11-10 09:52:02
original
692 Les gens l'ont consulté

Strings: Checking for Palindromes

Dans cet article, nous aborderons une question d'entretien courante : vérifier si une chaîne donnée est un palindrome. Ce problème est un excellent exercice pour comprendre les pointeurs, les boucles et la logique conditionnelle en Java.


Énoncé du problème

Écrivez une méthode Java qui vérifie si une chaîne donnée est un palindrome. Un palindrome est un mot ou une phrase qui se lit de la même manière vers l'avant et vers l'arrière (par exemple, « midi » ou « madame »).


Présentation de la solution

La solution exploite une technique à deux pointeurs pour vérifier les caractères des deux extrémités de la chaîne, en se déplaçant vers le centre. En comparant les caractères aux positions correspondantes, nous pouvons déterminer si la chaîne est un palindrome sans avoir à l'inverser.

Points clés de l’approche :

  1. Technique à deux points : Vérifiez les caractères dans les deux sens.
  2. Sortie anticipée : Arrêtez-vous dès qu'un décalage est détecté.
  3. Optimisation : ne traversez que jusqu'à la moitié de la longueur de la corde pour plus d'efficacité.

Solution de code

Voici le code de la solution :

public class StringPalindromeQuestion {

    // Method to check if a given string is a palindrome
    private boolean isPalindrome(String string) {
        if (string != null) {
            for (int i = 0, j = string.length() - 1; i < string.length()
            / 2; i++, j--) {
                if (string.charAt(i) != string.charAt(j)) {
                    return false;
                }
            }
        }
        return true;
    }

    public static void main(String[] args) {
        StringPalindromeQuestion palindrome = new StringPalindromeQuestion();

        String oddString = "abcdcba";    // Palindrome with odd length
        String evenString = "abccba";    // Palindrome with even length
        String nonPalindrome = "asfgsa"; // Not a palindrome

        // Result: true
        System.out.println(palindrome.isPalindrome(oddString));

        // Result: true
        System.out.println(palindrome.isPalindrome(evenString));

        // Result: false
        System.out.println(palindrome.isPalindrome(nonPalindrome));

        // Testing with null
        // Result: true
        System.out.println(palindrome.isPalindrome(null));
    }
}
Copier après la connexion

Explication

1. Approche en deux points :

  • On initialise deux pointeurs : un au début (i) et un à la fin (j).

  • Nous comparons les caractères à ces positions (string.charAt(i) et string.charAt(j)) et incrémentons i et décrémentons j après chaque comparaison.

  • La boucle ne s'étend que jusqu'à string.length() / 2, garantissant un parcours efficace, que la longueur soit paire ou impaire.

2. Longueur impaire ou paire :

  • Pour les chaînes de longueur paire (par exemple, "abccba"), la méthode vérifie jusqu'au milieu, donc aucun caractère central ne reste décoché.

  • Pour les chaînes de longueur impaire (par exemple, "abcdcba"), le caractère du milieu n'affecte naturellement pas le statut du palindrome.

3. Gestion des valeurs nulles :
La méthode vérifie si la chaîne est nulle au début pour éviter NullPointerException.

Exemple de sortie

  • Palindrome de longueur impaire : "abcdcba" renvoie vrai.

  • Palindrome de longueur paire : "abccba" renvoie vrai.

  • Non Palindrome : "asfgsa" renvoie false.

  • Null String : renvoie vrai (une entrée nulle est considérée comme un palindrome par cette implémentation).


Conseil d'entretien ?

Comprendre les techniques à deux pointeurs est précieux pour résoudre efficacement de nombreux problèmes basés sur les chaînes. Cette technique évite une complexité spatiale supplémentaire et accélère l'exécution du code en limitant les comparaisons inutiles.


Conclusion

Cette solution fournit un moyen propre et efficace de vérifier les palindromes en Java. Essayez d'utiliser cette approche avec différentes entrées de chaîne pour consolider davantage votre compréhension de la manipulation du pointeur et du parcours de chaîne.


Articles connexes

  • Principes fondamentaux de Java
  • Les essentiels de l'entretien avec Array
  • L'essentiel de la mémoire Java
  • L'essentiel des mots-clés Java
  • L'essentiel de Java OOP
  • L'essentiel du cadre de collections

Bon codage !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal