Palindrom-Zahlenprogramm in Java Verwenden der while- und for-Schleife
⚡ Intelligente Zusammenfassung
Palindrom-Zahlenprogramm in Java Diese Methode prüft, ob ein Wert vorwärts und rückwärts identisch ist, indem ihre Ziffern umgekehrt werden. Der Artikel stellt den Algorithmus, eine Version mit einer While-Schleife, eine Version mit einer For-Schleife, eine stringbasierte Methode, Rekursion, Grenzfälle und eine Komplexitätsanalyse mit verifizierter Ausgabe vor.
Was ist eine Palindromzahl?
A Palindromzahl Ein Palindrom ist eine Zahl, die auch rückwärts gelesen gleich bleibt. Zum Beispiel 131. Auch wenn man die Ziffern umkehrt, bleibt die Zahl gleich. Eine Palindromzahl ist spiegelsymmetrisch an der vertikalen Achse. Dasselbe gilt für ein Wort, dessen Buchstaben sich auch umkehren lassen.
Beispiele für Palindromzahlen in Java
121, 393, 34043, 111, 555, 48084
Beispiele für Palindromwörter
LOL, MADAM
Jede einzelne Ziffer von 0 bis 9 ist per Definition ein Palindrom, da die Umkehrung einer Ziffer dieselbe Ziffer ergibt.
Palindrom-Zahlenalgorithmus
Nachfolgend ist die Logik des Palindromzahlenalgorithmus aufgeführt. Java:
- Rufen Sie die Eingabenummer ab, die überprüft werden muss, um a zu sein Palindrom.
- Kopiere die Zahl in eine temporäre Variable und kehre sie um.
- Vergleichen Sie die umgekehrte und die ursprüngliche Nummer.
- Wenn sie gleich sind, handelt es sich um eine „Palindromzahl“.
- Andernfalls handelt es sich bei der Zahl nicht um eine „Palindromzahl“.
Nur die Umkehrung selbst erfordert Sorgfalt. Zwei arithmetische Operationen erledigen die ganze Arbeit, siehe Tabelle unten. traces ihnen für den Wert 171.
| Passieren | a (verbleibende Zahl) | letzteDigit = a % 10 | Summe = (Summe * 10) + letzteDigit | a = a / 10 |
|---|---|---|---|---|
| 1 | 171 | 1 | 1 | 17 |
| 2 | 17 | 7 | 17 | 1 |
| 3 | 1 | 1 | 171 | 0 |
Nach dem letzten Durchlauf ist die Summe 171, was der ursprünglichen Eingabe entspricht, womit bestätigt wird, dass es sich um ein Palindrom handelt.
So überprüfen Sie, ob die Eingabenummer Palindrom ist oder nicht
Unten finden Sie ein Palindromprogramm in Java mit einer WHILE-Schleife. Die Schleife läuft so lange, wie Ziffern vorhanden sind, und die print-Anweisungen geben den Zustand jeder Variablen während jedes Durchlaufs aus.
package com.guru99; public class PalindromeNum { public static void main(String[] args) { int lastDigit, sum = 0, a; int inputNumber = 171; //It is the number to be checked for palindrome a = inputNumber; // Code to reverse a number while(a > 0) { System.out.println("Input Number " + a); lastDigit = a % 10; //getting remainder System.out.println("Last Digit " + lastDigit); System.out.println("Digit " + lastDigit + " was added to sum " + (sum * 10)); sum = (sum * 10) + lastDigit; a = a / 10; } // if the given number equals sum then the number is a palindrome, otherwise not if(sum == inputNumber) System.out.println("Number is palindrome "); else System.out.println("Number is not palindrome"); } }
Code Ausgang:
Input Number 171 Last Digit 1 Digit 1 was added to sum 0 Input Number 17 Last Digit 7 Digit 7 was added to sum 10 Input Number 1 Last Digit 1 Digit 1 was added to sum 170 Number is palindrome
Programm zum Überprüfen von Palindromen mithilfe einer for-Schleife
Unten ist eine Java Programm zur Berechnung von Palindromen mithilfe einer for-Schleife. Der Schleifenkopf enthält die Abbruchbedingung und die Division, daher darf der Schleifenkörper nicht erneut dividieren.
package com.guru99; public class PalindromeNumForLoop { public static void main(String[] args) { int lastDigit, sum = 0, a; int inputNumber = 185; //It is the number to be checked for palindrome a = inputNumber; // Code to reverse a number for( ; a != 0; a /= 10 ) { System.out.println("Input Number " + a); lastDigit = a % 10; //getting remainder System.out.println("Last Digit " + lastDigit); System.out.println("Digit " + lastDigit + " was added to sum " + (sum * 10)); sum = (sum * 10) + lastDigit; } // if the given number equals sum then the number is a palindrome, otherwise not if(sum == inputNumber) System.out.println("Number is palindrome "); else System.out.println("Number is not palindrome"); } }
Code Ausgang:
Input Number 185 Last Digit 5 Digit 5 was added to sum 0 Input Number 18 Last Digit 8 Digit 8 was added to sum 50 Input Number 1 Last Digit 1 Digit 1 was added to sum 580 Number is not palindrome
⚠️ Warnung: Ein häufiger Fehler ist es, zu behalten a = a / 10; innerhalb des Schleifenkörpers, während der Header bereits enthält a /= 10Die Zahl wird dann in jedem Durchlauf zweimal geteilt, die Hälfte der Ziffern wird übersprungen, und ein echtes Palindrom wie 121 wird fälschlicherweise als kein Palindrom gemeldet.
Palindrom-Programm in Java Verwendung von Zeichenketten Reverse
Durch die Umwandlung des Werts in Text kann StringBuilder ihn mit einem einzigen Aufruf umkehren. Dieselbe Methode funktioniert auch für Wörter, die mit dem numerischen Ansatz nicht verarbeitet werden können.
package com.guru99; public class PalindromeString { public static boolean isPalindrome(String text) { // ignore case so MADAM and madam behave identically String clean = text.toLowerCase(); String reversed = new StringBuilder(clean).reverse().toString(); return clean.equals(reversed); } public static void main(String[] args) { System.out.println(isPalindrome("121")); System.out.println(isPalindrome("MADAM")); System.out.println(isPalindrome("Java")); } }
Code Ausgang:
true true false
Palindrom-Programm in Java Verwendung von Rekursion
Die Rekursion vergleicht das äußerste Zeichenpaar und ruft sich dann selbst für den schrumpfenden Mittelteil auf. Die Methode stoppt, sobald weniger als zwei Zeichen übrig sind.
package com.guru99; public class PalindromeRecursion { public static boolean isPalindrome(String text, int left, int right) { // base case: pointers met or crossed if (left >= right) { return true; } if (text.charAt(left) != text.charAt(right)) { return false; } return isPalindrome(text, left + 1, right - 1); } public static void main(String[] args) { String value = "34043"; System.out.println(value + " is palindrome: " + isPalindrome(value, 0, value.length() - 1)); String other = "12345"; System.out.println(other + " is palindrome: " + isPalindrome(other, 0, other.length() - 1)); } }
Code Ausgang:
34043 is palindrome: true 12345 is palindrome: false
Grenzfälle und Methodenvergleich
Drei Eingänge führen bei naiven Implementierungen zu Problemen, daher sollte jede Version vor der Verwendung anhand dieser Eingänge getestet werden.
- Negative Zahlen: Werte wie -121 sind niemals Palindrome, da das Minuszeichen am Ende kein Gegenstück hat.
if (inputNumber < 0) return false;. - Nachfolgende Nullen: Der Wert 100 wird zu 1 umgekehrt, daher liefert der Vergleich korrekterweise „false“. Nur die Zahl 0 selbst ist unter den Werten, die auf Null enden, zulässig.
- Ganzzahlüberlauf: RevDie Verwendung einer großen Ganzzahl wie 1,999,999,999 kann den Wertebereich von Ganzzahlen überschreiten. Deklarieren Sie die Summe als Long-Wert, wenn die Eingabe sich der Grenze nähern könnte.
Die folgende Tabelle vergleicht die vier auf dieser Seite dargestellten Ansätze.
| Methodik | Zeitliche Komplexität | Raumkomplexität | Werke für Wörter | Notizen |
|---|---|---|---|---|
| While-Schleife | O (log n) | O (1) | Nein | Klarste Demonstration der Ziffernumkehr |
| Für Schleife | O (log n) | O (1) | Nein | Identische Logik, Division nur im Header |
| StringBuilder umgekehrt | O (n) | O (n) | Ja | Kürzester Code, der einen neuen String zuweist. |
| Rekursion | O (n) | O(n) Stapel | Ja | Nützlich für Interviewgespräche zum Thema Rekursion |
Die Ziffer extracDas hier verwendete Muster taucht in vielen Übungen wieder auf. Fahren Sie mit dem Fibonacci-Folge in Java, hat das Java Programm zur Überprüfung einer Primzahlund die Bubble Sortieralgorithmus in JavaDie Syntax der Schleife selbst finden Sie in der folgenden Dokumentation: für jede Schleife in Java und je breiter Java Lernprogramm, und sehen Java Streicher für die textbasierte Methode.

