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ă.

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.
- 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;. - 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.
- 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.
