Palindrom szám program be Java A while & for Loop használata
⚡ Okos összefoglaló
Palindrom szám program be Java A függvény meghatározza, hogy egy érték azonosan olvasható-e előre és hátra, a számjegyek megfordításával. Ez a cikk bemutatja az algoritmust, egy while ciklus verziót, egy for ciklus verziót, egy karakterlánc alapú metódust, rekurziót, éleseteket és komplexitásanalízist ellenőrzött kimenettel.

Mi a palindromszám?
A Palindrom szám egy olyan szám, amelynek a helyesírása megfordul, például 131. Ha a számjegyeit felcseréljük, akkor ugyanaz a szám marad. A palindromszámok a függőleges tengelyen tükrözési szimmetriát mutatnak. Ugyanez az elképzelés vonatkozik egy olyan szóra is, amelynek a betűit felcserélve ugyanolyan a helyesírása.
Palindroma szám példái Java
121, 393, 34043, 111, 555, 48084
Palindroma szavak példái
LOL, MADAM
Definíció szerint minden 0 és 9 közötti számjegy palindrom, mivel egy számjegy megfordítása ugyanazt a számjegyet eredményezi.
Palindrom szám algoritmus
Az alábbiakban a palindromszám-algoritmus logikája látható. Java:
- Kérje le a bemeneti számot, amelyet ellenőrizni kell, hogy a palindrom.
- Másold be a számot egy ideiglenes változóba, és fordítsd meg.
- Hasonlítsa össze a fordított és az eredeti számot.
- Ha megegyeznek, akkor a szám egy „palindromaszám”.
- Egyébként a szám nem „palindromaszám”.
Maga a megfordítás az egyetlen rész, amivel foglalkozni kell. Két aritmetikai művelet végzi el az összes munkát, és az alábbi táblázat traces őket a 171-es értékre.
| Átmegy | a (fennmaradó szám) | utolsóDigit = a % 10 | összeg = (összeg * 10) + utolsóDigit | a = a / 10 |
|---|---|---|---|---|
| 1 | 171 | 1 | 1 | 17 |
| 2 | 17 | 7 | 17 | 1 |
| 3 | 1 | 1 | 171 | 0 |
Az utolsó menet után az sum értéke 171, ami megegyezik az eredetileg bemenetként megadott értékkel, így a szám palindromként megerősítést nyer.
Hogyan ellenőrizhető, hogy a bemeneti szám palindrom-e vagy sem
Az alábbiakban egy palindrom program látható Java egy WHILE ciklussal. A ciklus addig folytatódik, amíg a számjegyek megmaradnak, és a kiírási utasítások minden menet során minden változó állapotát megjelenítik.
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 output:
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 a palindrom ellenőrzésére a for ciklus segítségével
Az alábbiakban a Java palindromra vonatkozó program for ciklus használatával. A fejléc tartalmazza a kilépési tesztet és az osztást, így a ciklus törzse nem oszthat újra.
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 output:
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
⚠️ Figyelmeztetés: Gyakori hiba, hogy megtartjuk a = a / 10; a for ciklus törzsén belül, miközben a fejléc már tartalmazza a a /= 10A számot ezután menetenként kétszer osztják, a számjegyek felét kihagyják, és egy valódi palindromot, például a 121-et helytelenül, nem palindromként jelentenek.
Palindrom Program be Java Karakterlánc használata Reverse
Az érték szöveggé konvertálása lehetővé teszi a StringBuilder számára, hogy egyetlen hívásban megfordítsa azt. Ugyanez a metódus működik szavak esetén is, amelyeket a numerikus megközelítés nem tud kezelni.
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 output:
true true false
Palindrom Program be Java Rekurzió használata
A rekurzió összehasonlítja a legkülső karakterpárt, majd a zsugorodó középső szakaszon meghívja magát. A metódus leáll, ha kevesebb, mint két karakter marad.
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 output:
34043 is palindrome: true 12345 is palindrome: false
Edge Esetek és módszerek összehasonlítása
Három bemenet sérti a naiv implementációkat, ezért minden verziót használat előtt tesztelni kell velük szemben.
- Negatív számok: Az olyan értékek, mint a -121, soha nem palindromok, mivel a mínuszjelnek nincs megfelelője a végén.
if (inputNumber < 0) return false;. - Záró nullák: A 100-as érték 1-re változik, így az összehasonlítás helyesen hamis értéket ad vissza. Csak maga a 0 szám kerül át a nullára végződő értékek között.
- Egész szám túlcsordulás: RevEgy nagy egész szám, például az 1 999 999 999 meghaladhatja az egész tartományt. Az sum függvényt long típusként kell deklarálni, ha a bemenet megközelítheti a határértéket.
Az alábbi táblázat összehasonlítja az ezen az oldalon bemutatott négy megközelítést.
| Módszer | Idő komplexitás | Tér komplexitás | Működik szavakért | Megjegyzések |
|---|---|---|---|---|
| Miközben hurok | O (log n) | O (1) | Nem | A számjegyváltás legtisztább bemutatása |
| Hurokhoz | O (log n) | O (1) | Nem | Azonos logika, osztás csak a fejlécben |
| StringBuilder fordított | O (n) | O (n) | Igen | Legrövidebb kód, új karakterláncot foglal le |
| Rekurzió | O (n) | O(n) verem | Igen | Hasznos a rekurzióval kapcsolatos interjúk megbeszéléseihez |
Az ex számjegytracAz itt használt gyakorlási minta számos gyakorlatban újra megjelenik. Folytassa a Fibonacci-sorozat Java, a Java prímszám-ellenőrző program, És a Bubble Rendezési algoritmus JavaMagának a ciklusszintaxisnak a leírását tekintse át. minden egyes hurokhoz Java és szélesebb Java oktatói, és nézd Java húrok a szövegalapú metódushoz.
