Maison >Java >javaDidacticiel >Comment déterminer efficacement si une chaîne est un palindrome ?

Comment déterminer efficacement si une chaîne est un palindrome ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-26 10:16:13694parcourir

How to Efficiently Determine if a String is a Palindrome?

Comment vérifier efficacement les chaînes pour les palindromes

Vérifier les chaînes pour les palindromes implique de vérifier si elles se lisent de manière identique dans les deux sens. Une approche simple pour cette tâche consiste à convertir la chaîne en un tableau de caractères et à comparer les éléments adjacents.

Voici un exemple d'implémentation de cette approche :

public class Aufg1 {
    // Main method for testing
    public static void main(String[] args) {
        String wort = "reliefpfpfeiller";
        char[] warray = wort.toCharArray();
        System.out.println(istPalindrom(warray));
    }

    // Method for checking palindromes
    public static boolean istPalindrom(char[] word) {
        boolean palindrom = false;
        if (word.length % 2 == 0) {
            for (int i = 0; i < word.length / 2 - 1; i++) {
                if (word[i] != word[word.length - i - 1]) {
                    return false;
                } else {
                    palindrom = true;
                }
            }
        } else {
            for (int i = 0; i < (word.length - 1) / 2 - 1; i++) {
                if (word[i] != word[word.length - i - 1]) {
                    return false;
                } else {
                    palindrom = true;
                }
            }
        }
        return palindrom;
    }
}

Ce code parcourt le tableau de caractères , en comparant les éléments aux extrémités opposées pour déterminer s'ils correspondent. Cependant, il existe une approche plus optimisée qui consiste à comparer les éléments en commençant simultanément par le début et la fin.

Code amélioré :

public static boolean istPalindrom(char[] word) {
    int i1 = 0;
    int i2 = word.length - 1;
    while (i2 > i1) {
        if (word[i1] != word[i2]) {
            return false;
        }
        ++i1;
        --i2;
    }
    return true;
}

Exemple :

Utiliser la chaîne d'entrée "andna" comme exemple :

  • Initialisez i1 à 0 (représentant le début de la chaîne) et i2 à 4 (représentant la fin).
  • La boucle compare word[0] (a) avec word[4] (a).
  • i1 est incrémenté à 1 tandis que i2 est décrémenté à 3.
  • La boucle continue en comparant le mot[1] (n) avec le mot[3] (n).
  • i1 est incrémenté à 2 tandis que i2 est décrémenté à 2.
  • Maintenant, i1 est égal à i2, donc la boucle se termine et la fonction renvoie vrai, indiquant que la chaîne est un palindrome.

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!

Déclaration:
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