Palindroomi numbriprogramm sisse Java Kasutades while & for Loop
โก Nutikas kokkuvรตte
Palindroomi numbriprogramm sisse Java mรครคrab, kas vรครคrtus loetakse identselt edasi-tagasi, pรถรถrates selle numbreid รผmber. See artikkel tutvustab algoritmi, while-tsรผkli versiooni, for-tsรผkli versiooni, stringipรตhist meetodit, rekursiooni, servajuhtumeid ja keerukusanalรผรผsi kontrollitud vรคljundiga.
Mis on palindroomi number?
A Palindroomi number on arv, mis jรครคb samaks ka รผmberpรถรถramisel. Nรคiteks 131. Kui selle numbrid รผmber pรถรถratakse, jรครคb see samaks. Palindroomarvul on vertikaalteljel peegeldussรผmmeetria. Sama idee kehtib ka sรตna kohta, millel on sama kirjapilt ka siis, kui selle tรคhed on รผmber pรถรถratud.
Palindroomi arvu nรคited Java
121, 393, 34043, 111, 555, 48084
Palindroomi sรตnade nรคited
LOL, MADAM
Iga รผksiknumber vahemikus 0 kuni 9 on definitsiooni jรคrgi palindroom, sest รผhe numbri รผmberpรถรถramine annab sama numbri.
Palindroomi numbri algoritm
Allpool on palindroomarvu algoritmi loogika Java:
- Hankige sisendnumber, mida tuleb kontrollida, kas see on a Palindroomid.
- Kopeeri number ajutisse muutujasse ja muuda see tagurpidi.
- Vรตrrelge รผmberpรถรถratud ja algset numbrit.
- Kui need on samad, on tegemist palindroomarvuga.
- Vastasel juhul ei ole tegemist palindroomarvuga.
Pรถรถramine ise on ainus osa, mis vajab tรคhelepanu. Kogu tรถรถ teevad รคra kaks aritmeetilist tehet ja allolev tabel trachindab neid vรครคrtusega 171.
| Sooritama | a (jรคrelejรครคnud number) | viimaneDigit = a % 10 | summa = (summa * 10) + viimaneDigit | a = a / 10 |
|---|---|---|---|---|
| 1 | 171 | 1 | 1 | 17 |
| 2 | 17 | 7 | 17 | 1 |
| 3 | 1 | 1 | 171 | 0 |
Pรคrast viimast lรคbimist on summa vรครคrtuseks 171, mis vรตrdub algse sisendiga, seega kinnitatakse, et tegemist on palindroomiga.
Kuidas kontrollida, kas sisendnumber on palindroom vรตi mitte
Allpool on palindroomiprogramm keeles Java WHILE-tsรผkliga. Tsรผkkel jรคtkub seni, kuni numbrid on alles, ja print-laused nรคitavad iga muutuja olekut iga tsรผkli jooksul.
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รคljund:
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
Programm palindroomi kontrollimiseks, kasutades tsรผklit
Allpool on Java Palindroomi programmeerimine for-tsรผkli abil. Pรคis sisaldab vรคljumistesti ja jagamist, seega tsรผkli sisu ei tohi uuesti jagama hakata.
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รคljund:
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
โ ๏ธ Hoiatus: Sagedane viga on hoida a = a / 10; for-tsรผkli sisus, samal ajal kui pรคises on juba a /= 10Seejรคrel jagatakse arv iga kรคigu kohta kaks korda, pooled numbritest jรคetakse vahele ja ehtne palindroom, nรคiteks 121, registreeritakse ekslikult mittepalindroomina.
Palindroomi programm sisse Java Stringi kasutamine Reverse
Vรครคrtuse tekstiks teisendamine vรตimaldab StringBuilderil selle รผhe kรตnega tagasi pรถรถrata. Sama meetod tรถรถtab ka sรตnade puhul, millega numbriline lรคhenemine hakkama ei saa.
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รคljund:
true true false
Palindroomi programm sisse Java Rekursiooni kasutamine
Rekursioon vรตrdleb kรตige vรคlimist mรคrgipaari ja kutsub seejรคrel ennast vรคlja kahaneva keskmise osa pรตhjal. Meetod peatub, kui jรคrele on jรครคnud vรคhem kui kaks mรคrki.
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รคljund:
34043 is palindrome: true 12345 is palindrome: false
รรคrmusjuhtumid ja meetodite vรตrdlus
Kolm sisendit ei sobi naiivsetele rakendustele, seega tuleks iga versiooni enne kasutamist nende suhtes testida.
- Negatiivsed arvud: Vรครคrtused nagu -121 ei ole kunagi palindroomid, sest miinusmรคrgil pole lรตpus vastet.
if (inputNumber < 0) return false;. - Lรตppnullid: Vรครคrtus 100 muutub vรครคrtuseks 1, seega vรตrdlus tagastab korrektselt vรครคrtuse โvรครคrโ. Nulliga lรตppevate vรครคrtuste hulgast lรคbib ainult arv 0 ise.
- Tรคisarvu รผletรคitumine: RevSuure tรคisarvu (int), nรคiteks 1 999 999 999, sisestamine vรตib รผletada tรคisarvude vahemikku. Deklareeri โsumโ pika arvuna, kui sisend vรตib lรคheneda piirile.
Allolev tabel vรตrdleb nelja sellel lehel nรคidatud lรคhenemisviisi.
| Meetod | Aja keerukus | Ruumi keerukus | Tรถรถtab sรตnade jaoks | mรคrkused |
|---|---|---|---|---|
| Kuigi silmus | O (log n) | O (1) | Ei | Numbri รผmberpรถรถramise selgeim demonstratsioon |
| Silmuse jaoks | O (log n) | O (1) | Ei | Identne loogika, jagamine ainult pรคises |
| StringBuilderi tagurpidi | O (n) | O (n) | Jah | Lรผhim kood, eraldab uue stringi |
| Rekursiooni | O (n) | O(n) pinu | Jah | Kasulik rekursiooni kรคsitlevate intervjuude puhul |
Number extracSiin kasutatud mustrit korratakse paljudes harjutustes. Jรคtkake Fibonacci seeria Java, Java programm algarvu kontrollimiseksJa Bubble Sordi algoritm sisse JavaTsรผkli sรผntaksi enda kohta vaadake รผle iga tsรผkli kohta Java ja seda laiem Java juhendajaja vaata Java stringid tekstipรตhise meetodi jaoks.

