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.
