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.

  • 🔁 Kerndefinition: Eine Palindromzahl bleibt unverändert, wenn ihre Ziffern umgekehrt werden, wie zum Beispiel bei 131, 393 und 34043.
  • Reversal Technik: Der Modulo-Operator extract ist die letzte Ziffer und wird durch Ganzzahldivision entfernt, eine Ziffer pro Durchlauf.
  • 🧮 Akkumulatorregel: Bei jedem Durchlauf wird die laufende Summe mit zehn multipliziert, bevor die neu hinzugefügten Werte addiert werden.tracted digit.
  • 🔂 Schleifenwahl: Eine while-Schleife und eine for-Schleife liefern identische Ergebnisse, vorausgesetzt, die Division erfolgt genau einmal pro Iteration.
  • 🔤 String-Methode: StringBuilder vergleicht Text direkt rückwärts und funktioniert sowohl für Wörter als auch für Zahlen.
  • ⚠️ Randfälle: Einstellige Werte sind immer Palindrome, negative Werte niemals, und nachfolgende Nullen unterbrechen den numerischen Vergleich.
  • Komplexitätsprofil: Beide Schleifenversionen haben eine Laufzeit von O(log n), die proportional zur Ziffernanzahl ist, und benötigen O(1) zusätzlichen Speicherplatz.

Palindrom-Zahlenprogramm in Java

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.

  1. Negative Zahlen: Werte wie -121 sind niemals Palindrome, da das Minuszeichen am Ende kein Gegenstück hat. if (inputNumber < 0) return false;.
  2. 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.
  3. 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.

Häufig gestellte Fragen

Nein. Das Minuszeichen steht nur am Anfang, daher ist -121 rückwärts 121-, was niemals übereinstimmt. Fügen Sie eine frühe Bedingung hinzu, die für jeden Wert kleiner als Null „false“ zurückgibt.

Durch die Multiplikation werden die bereits gesammelten Ziffern um eine Stelle nach links verschoben, wodurch die Einerstelle für die neu hinzugekommene Ziffer frei wird.tracted Ziffer. Dies setzt die Zahl in umgekehrter Reihenfolge wieder zusammen.

Der umgekehrte Wert kann den Maximalwert von 2147483647 überschreiten und zu einem negativen Ergebnis führen. Deklarieren Sie den Akkumulator als Long-Wert oder vergleichen Sie die Werte stattdessen als Strings.

Lies den Wert mit Scanner und nextInt ein und übergib ihn anschließend an dieselbe Umkehrlogik. Schließe den Lesevorgang in einen try-Block ein, damit nicht-numerische Eingaben das Programm nicht zum Absturz bringen.

Normalerweise ja, wenn man explizit um eine Codeüberprüfung gebeten wird. Sie melden Fehler selten unaufgefordert, daher sollte man immer ein bekanntes Palindrom wie 121 testen, anstatt sich auf ein scheinbar fehlerfreies Beispiel zu verlassen.

Die Aufgabe prüft Schleifensteuerung, Ganzzahlarithmetik und das Erkennen von Grenzfällen in wenigen Zeilen. Sie zeigt auch, ob ein Kandidat den von der KI generierten Code vor der Einreichung überprüft.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: