Heim >Java >javaLernprogramm >Wie kann man effizient feststellen, ob ein String ein Palindrom ist?

Wie kann man effizient feststellen, ob ein String ein Palindrom ist?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-26 10:16:13693Durchsuche

How to Efficiently Determine if a String is a Palindrome?

So überprüfen Sie Strings effektiv auf Palindrome

Bei der Überprüfung von Strings auf Palindrome muss überprüft werden, ob sie in beide Richtungen identisch gelesen werden. Ein einfacher Ansatz für diese Aufgabe besteht darin, die Zeichenfolge in ein Zeichenarray umzuwandeln und benachbarte Elemente zu vergleichen.

Hier ist eine Beispielimplementierung dieses Ansatzes:

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;
    }
}

Dieser Code iteriert über das Zeichenarray Dabei werden Elemente an gegenüberliegenden Enden verglichen, um festzustellen, ob sie übereinstimmen. Es gibt jedoch einen optimierteren Ansatz, der den gleichzeitigen Vergleich von Elementen am Anfang und am Ende beinhaltet.

Verbesserter Code:

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;
}

Beispiel:

Verwenden der Eingabezeichenfolge „andna“ als Beispiel:

  • Initialisieren Sie i1 auf 0 (was den Anfang der Zeichenfolge darstellt) und i2 auf 4 (was das Ende darstellt).
  • Die Schleife vergleicht Wort[0] (a) mit Wort[4] (a).
  • i1 wird auf 1 erhöht, während i2 auf dekrementiert wird 3.
  • Die Schleife wird fortgesetzt und vergleicht Wort[1] (n) mit Wort[3] (n).
  • i1 wird auf 2 erhöht, während i2 auf 2 dekrementiert wird.
  • Jetzt ist i1 gleich i2, also endet die Schleife und die Funktion gibt true zurück, was anzeigt, dass die Zeichenfolge a ist Palindrom.

Das obige ist der detaillierte Inhalt vonWie kann man effizient feststellen, ob ein String ein Palindrom ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn