Programul Număr Palindrom în Java Folosind while & for Loop

⚡ Rezumat inteligent

Programul Număr Palindrom în Java determină dacă o valoare se citește identic înainte și înapoi, inversând cifrele sale. Acest articol prezintă algoritmul, o versiune a buclei while, o versiune a buclei for, o metodă bazată pe șiruri de caractere, recursivitate, cazuri marginale și analiză de complexitate cu ieșire verificată.

  • 🔁 Definiția de bază: Un număr palindrom rămâne neschimbat după ce cifrele sale sunt inversate, ca în cazul 131, 393 și 34043.
  • ➗ RevTehnică ersală: Operatorul modul extracUltima cifră este eliminată prin împărțirea între numere întregi, câte o cifră per trecere.
  • 🧮 Regula acumulatorului: Fiecare trecere înmulțește suma curentă cu zece înainte de a adăuga proaspătul ex.traccifră ted.
  • 🔂 Alegerea buclei: O buclă while și o buclă for produc rezultate identice, cu condiția ca împărțirea să apară exact o dată per iterație.
  • 🔤 Metoda șirurilor: StringBuilder compară textul direct în ordine inversă și funcționează atât pentru cuvinte, cât și pentru numere.
  • ⚠️ Carcase Edge: Valorile cu o singură cifră sunt întotdeauna palindromi, valorile negative nu sunt niciodată, iar zerourile finale întrerup comparația numerică.
  • ⏱️ Profil de complexitate: Ambele versiuni de buclă rulează într-un timp de O(log n) proporțional cu numărul de cifre și utilizează O(1) spațiu suplimentar.

Programul Număr Palindrom în Java

Ce este numărul palindromului?

A Numărul palindrom este un număr care rămâne același număr atunci când este inversat. De exemplu, 131. Când cifrele sale sunt inversate, rămâne același număr. Un număr palindrom are simetrie de reflexie pe axa verticală. Aceeași idee se aplică unui cuvânt care are aceeași ortografie atunci când literele sale sunt inversate.

Exemple de număr palindrom în Java

121, 393, 34043, 111, 555, 48084

Exemple de cuvinte palindrome

LOL, MADAM

Fiecare valoare cu o singură cifră de la 0 la 9 este un palindrom prin definiție, deoarece inversarea unei cifre produce aceeași cifră.

Algoritmul numărului palindrom

Mai jos este logica algoritmului pentru numărul palindromului în Java:

  • Preluați numărul de intrare care trebuie verificat pentru a fi a Palindrom.
  • Copiați numărul într-o variabilă temporară și inversați-l.
  • Comparați numărul inversat cu cel original.
  • Dacă sunt identici, numărul este un „număr palindrom”.
  • Altfel, numărul nu este un „număr palindrom”.

Inversarea în sine este singura parte care necesită atenție. Două operații aritmetice fac toată treaba, iar tabelul de mai jos tracle schimbă pentru valoarea 171.

Trece a (numărul rămas) ultimulDigit = a % 10 sumă = (sumă * 10) + ultimulDigit a = a / 10
1 171 1 1 17
2 17 7 17 1
3 1 1 171 0

După ultima trecere, suma conține 171, ceea ce este egal cu intrarea inițială, deci numărul este confirmat ca palindrom.

Cum să verificați dacă numărul de intrare este Palindrom sau nu

Mai jos este un program palindrom în Java cu o buclă WHILE. Bucla continuă cât timp rămân cifre, iar instrucțiunile de tipărire expun starea fiecărei variabile în timpul fiecărei treceri.

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 ieșire:

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

Program pentru a verifica Palindrom folosind bucla for

Mai jos este a Java program pentru palindrom folosind o buclă for. Antetul conține testul de ieșire și împărțirea, deci corpul buclei nu trebuie să se divizeze din nou.

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 ieșire:

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

⚠️ Atenție: O greșeală frecventă este să păstrezi a = a / 10; în corpul buclei for, în timp ce antetul conține deja a /= 10Numărul este apoi împărțit de două ori per trecere, jumătate din cifre sunt omise, iar un palindrom autentic, cum ar fi 121, este raportat incorect ca nefiind un palindrom.

Programul Palindrom în Java Folosind șiruri de caractere Reverse

Conversia valorii în text permite StringBuilder să o inverseze într-un singur apel. Aceeași metodă funcționează și pentru cuvinte, pe care abordarea numerică nu le poate gestiona.

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 ieșire:

true
true
false

Programul Palindrom în Java Utilizarea recursiunii

Recursivitatea compară perechea de caractere cea mai exterioară și apoi se auto-se auto-se auto-se auto-selectează în secțiunea din mijloc care se micșorează. Metoda se oprește când rămân mai puțin de două caractere.

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 ieșire:

34043 is palindrome: true
12345 is palindrome: false

Cazuri limită și compararea metodelor

Trei intrări strică implementările naive, așa că fiecare versiune ar trebui testată în raport cu acestea înainte de utilizare.

  1. Numere negative: Valori precum -121 nu sunt niciodată palindroame, deoarece semnul minus nu are corespondent la sfârșit. Păziți cu if (inputNumber < 0) return false;.
  2. Zerouri la final: Valoarea 100 se inversează la 1, deci comparația returnează corect valoarea fals. Doar numărul 0 în sine trece printre valorile care se termină în zero.
  3. Depășire de număr întreg: RevIntroducerea unui număr întreg mare, cum ar fi 1,999,999,999, poate depăși intervalul de numere întregi. Declarați sum ca long atunci când intrarea se poate apropia de limită.

Tabelul de mai jos compară cele patru abordări prezentate pe această pagină.

Metodă Complexitatea timpului Complexitatea spațială Lucrări pentru cuvinte notițe
În timp ce bucla O (jurnal n) O (1) Nu Cea mai clară demonstrație a inversării cifrelor
Pentru buclă O (jurnal n) O (1) Nu Logică identică, divizare doar în antet
StringBuilder invers O (n) O (n) Da Cel mai scurt cod, alocă un nou șir de caractere
Recursivitate O (n) Stiva O(n) Da Util pentru discuțiile din interviuri despre recurență

Cifra extracModelul de țiune folosit aici reapare în multe exerciții. Continuați cu Seria Fibonacci în Java, Java program pentru verificarea unui număr prim, Şi Bubble Sortați algoritmul JavaPentru sintaxa buclei în sine, consultați pentru fiecare buclă din Java și cu atât mai larg Java tutorial, si vezi Java siruri pentru metoda bazată pe text.

Întrebări frecvente

Nu. Semnul minus apare doar la început, deci -121 inversat este 121-, care nu se potrivește niciodată. Adăugați o gardă timpurie care returnează fals pentru orice valoare sub zero.

Înmulțirea deplasează cifrele deja adunate cu o poziție la stânga, ceea ce eliberează poziția unităților pentru noua exprimare.traccifră combinată. Aceasta reconstruiește numărul în ordine inversă.

Valoarea inversată poate depăși numărul maxim de întregi de 2147483647 și poate duce la un rezultat negativ. Declarați acumulatorul ca long sau comparați valorile ca șiruri de caractere.

Citiți valoarea cu Scanner și nextInt, apoi transmiteți-o aceleiași logici de inversare. Încadrați citirea într-un bloc try, astfel încât intrarea non-numerică să nu provoace blocarea programului.

De obicei, da, atunci când li se cere să revizuiască codul explicit. Rareori îl semnalează nesolicitat, așa că întotdeauna testează un palindrom cunoscut, cum ar fi 121, în loc să ai încredere într-un exemplu trecător.

Întrebarea testează controlul buclelor, aritmetica numerelor întregi și raționamentul cazurilor limită în câteva rânduri. De asemenea, dezvăluie dacă un candidat verifică codul generat de inteligența artificială înainte de a-l trimite.

Rezumați această postare cu: