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
Freigeben: 2024-12-26 10:16:13
Original
745 Leute haben es durchsucht

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;
    }
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage