Program broja palindroma u Java Korištenje while & for petlje
⚡ Pametni sažetak
Program broja palindroma u Java određuje čita li se vrijednost identično naprijed i unatrag obrćući svoje znamenke. Ovaj članak predstavlja algoritam, verziju while petlje, verziju for petlje, metodu temeljenu na stringovima, rekurziju, rubne slučajeve i analizu složenosti s provjerenim izlazom.

Što je palindromski broj?
A Broj palindroma je broj koji ostaje isti kada se obrne. Na primjer, 131. Kada se njegove znamenke obrnu, ostaje isti broj. Palindromski broj ima refleksijsku simetriju na vertikalnoj osi. Ista ideja vrijedi i za riječ koja ima isti pravopis kada se slova obrnu.
Primjeri palindromskog broja u Java
121, 393, 34043, 111, 555, 48084
Primjeri palindromskih riječi
LOL, MADAM
Svaka jednoznamenkasta vrijednost od 0 do 9 je po definiciji palindrom, jer obrnuta zamjena jedne znamenke daje istu znamenku.
Algoritam broja palindroma
Ispod je logika algoritma za palindromski broj u Java:
- Dohvatite ulazni broj za koji treba provjeriti da je a palindrom.
- Kopirajte broj u privremenu varijablu i obrnite ga.
- Usporedite obrnuti i izvorni broj.
- Ako su isti, broj je „palindromski broj“.
- Inače broj nije „palindromski broj“.
Samo preokretanje je jedini dio koji zahtijeva pažnju. Dvije aritmetičke operacije obavljaju sav posao, a tablica u nastavku tracdaje im vrijednost 171.
| Proći | a (preostali broj) | zadnjiDigit = a % 10 | zbroj = (zbroj * 10) + zadnjiDigit | a = a / 10 |
|---|---|---|---|---|
| 1 | 171 | 1 | 1 | 17 |
| 2 | 17 | 7 | 17 | 1 |
| 3 | 1 | 1 | 171 | 0 |
Nakon posljednjeg prolaza, sum sadrži 171, što je jednako izvornom ulazu, pa se broj potvrđuje kao palindrom.
Kako provjeriti je li ulazni broj palindrom ili nije
Ispod je palindromski program u Java s WHILE petljom. Petlja se nastavlja dok ostaju znamenke, a print naredbe otkrivaju stanje svake varijable tijekom svakog prolaza.
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 Izlaz:
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 za provjeru palindroma pomoću for petlje
Ispod je a Java program za palindrom pomoću for petlje. Zaglavlje sadrži test izlaza i dijeljenje, tako da tijelo petlje ne smije ponovno dijeliti.
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 Izlaz:
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
⚠️ Upozorenje: Česta greška je držati a = a / 10; unutar tijela for petlje dok zaglavlje već sadrži a /= 10Broj se zatim dijeli dva puta po prolazu, polovica znamenki se preskače, a pravi palindrom poput 121 se netočno prijavljuje kao da nije palindrom.
Palindrom Program in Java Korištenje niza znakova Reverse
Pretvaranje vrijednosti u tekst omogućuje StringBuilderu da je obrne u jednom pozivu. Ista metoda funkcionira i za riječi koje numerički pristup ne može obraditi.
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 Izlaz:
true true false
Palindrom Program in Java Korištenje rekurzije
Rekurzija uspoređuje najudaljeniji par znakova, a zatim poziva samu sebe na smanjenom srednjem dijelu. Metoda se zaustavlja kada ostane manje od dva znaka.
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 Izlaz:
34043 is palindrome: true 12345 is palindrome: false
Rubni slučajevi i usporedba metoda
Tri ulaza prekidaju naivne implementacije, pa svaku verziju treba testirati u odnosu na njih prije upotrebe.
- Negativni brojevi: Vrijednosti poput -121 nikada nisu palindromi, jer znak minus nema ekvivalent na kraju. Zaštitite se s
if (inputNumber < 0) return false;. - Završne nule: Vrijednost 100 se obrće u 1, pa usporedba ispravno vraća false. Samo broj 0 prolazi među vrijednostima koje završavaju nulom.
- Prelijevanje cijelog broja: RevKorištenje velikog cijelog broja kao što je 1,999,999,999 može premašiti raspon cijelih brojeva. Deklarirajte sum kao long kada se ulaz može približiti granici.
Donja tablica uspoređuje četiri pristupa prikazana na ovoj stranici.
| način | Složenost vremena | Složenost prostora | Djela za riječi | Bilješke |
|---|---|---|---|---|
| Dok petlja | O (zapisnik n) | O (1) | Ne | Najjasnija demonstracija inverzije znamenki |
| Za petlju | O (zapisnik n) | O (1) | Ne | Identična logika, podjela samo u zaglavlju |
| Obrnuto od StringBuildera | O (n) | O (n) | Da | Najkraći kod, dodjeljuje novi niz znakova |
| Rekurzije | O (n) | O(n) stog | Da | Korisno za razgovore o rekurziji u intervjuima |
Znamenka extracUzorak korišten ovdje ponovno se pojavljuje u mnogim vježbama. Nastavite s Fibonaccijev niz u Java je Java program za provjeru prostih brojeva, A Bubble Algoritam sortiranja u JavaZa samu sintaksu petlje, pregledajte za svaku petlju u Java i šire Java udžbenik, i vidi Java žice za metodu temeljenu na tekstu.
