In diesem Beitrag gehen wir eine häufige Interviewfrage durch – prüfen, ob eine bestimmte Zeichenfolge ein Palindrom ist. Dieses Problem ist eine großartige Übung zum Verständnis von Zeigern, Schleifen und bedingter Logik in Java.
Schreiben Sie eine Java-Methode, die prüft, ob eine bestimmte Zeichenfolge ein Palindrom ist. Ein Palindrom ist ein Wort oder eine Phrase, die sich vorwärts und rückwärts gleich liest (z. B. „Mittag“ oder „Frau“).
Die Lösung nutzt eine Zwei-Zeiger-Technik, um Zeichen von beiden Enden der Zeichenfolge aus zur Mitte hin zu überprüfen. Durch den Vergleich von Zeichen an entsprechenden Positionen können wir feststellen, ob die Zeichenfolge ein Palindrom ist, ohne sie umkehren zu müssen.
Hier ist der Code für die Lösung:
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)); } }
1. Zwei-Punkte-Ansatz:
Wir initialisieren zwei Zeiger: einen am Anfang (i) und einen am Ende (j).
Wir vergleichen Zeichen an diesen Positionen (string.charAt(i) und string.charAt(j)) und erhöhen i und dekrementieren j nach jedem Vergleich.
Die Schleife läuft nur bis string.length() / 2 und gewährleistet so eine effiziente Durchquerung, unabhängig davon, ob die Länge ungerade oder gerade ist.
2. Ungerade vs. gerade Länge:
Für gerade Länge Zeichenfolgen (z. B. „abccba“) prüft die Methode bis zum Mittelpunkt, sodass kein mittleres Zeichen ungeprüft bleibt.
Bei Strings mit ungerader Länge (z. B. „abcdcba“) hat das mittlere Zeichen natürlich keinen Einfluss auf den Palindromstatus.
3. Nullbehandlung:
Die Methode prüft, ob die Zeichenfolge am Anfang null ist, um eine NullPointerException zu vermeiden.
Palindrom ungerader Länge: „abcdcba“ gibt true zurück.
Palindrom mit gerader Länge: „abccba“ gibt true zurück.
Nicht-Palindrom: „asfgsa“ gibt false zurück.
Null String: gibt true zurück (eine Null-Eingabe wird von dieser Implementierung als Palindrom betrachtet).
Das Verständnis von Zwei-Zeiger-Techniken ist für die effiziente Lösung vieler stringbasierter Probleme hilfreich. Diese Technik vermeidet zusätzliche Platzkomplexität und beschleunigt die Codeausführung, indem unnötige Vergleiche begrenzt werden.
Diese Lösung bietet eine saubere und effiziente Möglichkeit, in Java nach Palindromen zu suchen. Versuchen Sie, diesen Ansatz mit verschiedenen String-Eingaben zu verwenden, um Ihr Verständnis der Zeigermanipulation und String-Traversierung weiter zu festigen.
Viel Spaß beim Programmieren!
Das obige ist der detaillierte Inhalt vonStrings: Auf Palindrome prüfen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!