Palindrom číselný program v Java Použití while a pro smyčku
⚡ Chytré shrnutí
Palindrom číselný program v Java Určuje, zda se hodnota čte identicky vpřed i vzad, a to obrácením jejích číslic. Tento článek představuje algoritmus, verzi smyčky while, verzi smyčky for, metodu založenou na řetězcích, rekurzi, okrajové případy a analýzu složitosti s ověřeným výstupem.

Co je to palindromové číslo?
A Palindromové číslo je číslo, které zůstává stejné, i když je obráceno. Například 131. Když jsou jeho číslice obráceny, zůstává stejné číslo. Palindromové číslo má zrcadlovou symetrii na svislé ose. Stejná myšlenka platí pro slovo, které má stejný pravopis, i když jsou jeho písmena obrácena.
Příklady palindromového čísla v Java
121, 393, 34043, 111, 555, 48084
Příklady palindromových slov
LOL, MADAM
Každá jednočíslicová hodnota od 0 do 9 je z definice palindrom, protože obrácením jedné číslice získáme stejnou číslici.
Algoritmus čísla palindromu
Níže je uvedena logika algoritmu pro palindromové číslo. Java:
- Získejte vstupní číslo, u kterého je třeba zkontrolovat, zda je a Palindrom.
- Zkopírujte číslo do dočasné proměnné a obraťte jeho hodnotu.
- Porovnejte obrácené a původní číslo.
- Pokud jsou stejná, jedná se o „palindromové číslo“.
- Jinak se nejedná o „palindromové číslo“.
Samotné obrácení je jediná část, která vyžaduje péči. Veškerou práci provedou dvě aritmetické operace a tabulka níže tracnastaví je na hodnotu 171.
| Přejít | a (zbývající číslo) | posledníDigit = a % 10 | součet = (součet * 10) + posledníDigit | a = a / 10 |
|---|---|---|---|---|
| 1 | 171 | 1 | 1 | 17 |
| 2 | 17 | 7 | 17 | 1 |
| 3 | 1 | 1 | 171 | 0 |
Po posledním průchodu má sum hodnotu 171, což se rovná původnímu vstupu, takže číslo je potvrzeno jako palindrom.
Jak zkontrolovat, zda je vstupní číslo Palindrom nebo ne
Níže je uveden palindromový program v Java se smyčkou WHILE. Smyčka pokračuje, dokud zůstanou číslice, a příkazy print během každého průchodu zobrazují stav každé proměnné.
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 Výstup:
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 pro kontrolu palindromu pomocí smyčky for
Níže je Java program pro palindrom pomocí cyklu for. Hlavička obsahuje výstupní test a dělení, takže tělo cyklu se nesmí znovu dělit.
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 Výstup:
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
Warning️ Varování: Častou chybou je ponechávat a = a / 10; uvnitř těla smyčky for, zatímco hlavička již obsahuje a /= 10Číslo je pak v každém průchodu dvakrát děleno, polovina číslic je přeskočena a skutečný palindrom, jako například 121, je nesprávně hlášen jako nepalindrom.
Program Palindrom v Java Použití řetězce Reverse
Převod hodnoty na text umožňuje StringBuilderu obrátit ji v jednom volání. Stejná metoda funguje i pro slova, která numerický přístup nedokáže zpracovat.
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 Výstup:
true true false
Program Palindrom v Java Použití rekurze
Rekurze porovnává nejvzdálenější dvojici znaků a poté se volá na zmenšující se střední části. Metoda se zastaví, když zbývají méně než dva znaky.
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 Výstup:
34043 is palindrome: true 12345 is palindrome: false
Okrajové případy a srovnání metod
Tři vstupy narušují naivní implementace, takže každá verze by měla být před použitím otestována proti nim.
- Záporná čísla: Hodnoty jako -121 nikdy nejsou palindromy, protože znaménko mínus nemá na konci protějšek. Chraňte se
if (inputNumber < 0) return false;. - Koncové nuly: Hodnota 100 se obrátí na 1, takže porovnání správně vrátí hodnotu false. Mezi hodnotami končícími nulou prochází pouze číslo 0.
- Přetečení celého čísla: RevPoužití velkého celého čísla, například 1 999 999 999, může překročit rozsah celých čísel. Deklarujte sum jako long, pokud se vstupní hodnota může blížit limitu.
Níže uvedená tabulka porovnává čtyři přístupy uvedené na této stránce.
| Metoda | Časová složitost | Složitost vesmíru | Díla pro slova | Poznámky |
|---|---|---|---|---|
| Zatímco smyčka | O (log n) | O (1) | Ne | Nejjasnější demonstrace obrácení číslic |
| Pro smyčku | O (log n) | O (1) | Ne | Identická logika, rozdělení pouze v záhlaví |
| StringBuilder reverzní | O (n) | O (n) | Ano | Nejkratší kód, alokuje nový řetězec |
| Rekurze | O (n) | O(n) zásobník | Ano | Užitečné pro rozhovory o rekurzi |
Číslice extracZde použitý vzorec se v mnoha cvičeních znovu objevuje. Pokračujte s Fibonacciho řada v Javase Java program pro kontrolu prvočíslaA Bubble Algoritmus řazení v Java. Samotnou syntaxi smyčky si projděte pro každou smyčku v Java a širší Java konzultace, a vidí Java řetězce pro textovou metodu.
