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.

  • ๐Ÿ” Pรตhidefinitsioon: Palindroomnumber jรครคb pรคrast numbrite รผmberpรถรถramist muutumatuks, nagu 131, 393 ja 34043.
  • โž— Reversal tehnika: Mooduli operaator extracViimase numbri ja tรคisarvude jagamine eemaldab selle, รผhe numbri iga kรคigu kohta.
  • ๐Ÿงฎ Akumulaatori reegel: Iga lรคbimine korrutab jooksva summa kรผmnega enne vรคrskelt vรคljunud vรครคrtuse lisamist.tracted number.
  • ๐Ÿ”‚ Silmuse valik: While ja for tsรผkkel annavad identsed tulemused, eeldusel, et jagamine toimub tรคpselt รผks kord iteratsioonis.
  • ๐Ÿ”ค Stringi meetod: StringBuilder vรตrdleb teksti otse vastupidiselt ja tรถรถtab nii sรตnade kui ka numbrite puhul.
  • โš ๏ธ ร„รคreรผmbrised: รœhekohalised vรครคrtused on alati palindroomid, negatiivsed vรครคrtused mitte kunagi ja lรตpus olevad nullid katkestavad numbrilise vรตrdluse.
  • ๏ธ Keerukuse profiil: Mรตlemad tsรผkli versioonid tรถรถtavad O(log n) ajaga, mis on proportsionaalne numbrite arvuga, ja kasutavad O(1) lisaruumi.

Palindroomi numbriprogramm sisse Java

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.

  1. Negatiivsed arvud: Vรครคrtused nagu -121 ei ole kunagi palindroomid, sest miinusmรคrgil pole lรตpus vastet. if (inputNumber < 0) return false;.
  2. 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.
  3. 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.

KKK

Ei. Miinusmรคrk kuvatakse ainult ees, seega -121 รผmberpรถรถratud kujul on 121-, mis ei sobi kunagi kokku. Lisage varajane kaitse, mis tagastab vรครคrtuse "vรครคr" iga nullist vรคiksema vรครคrtuse korral.

Korrutamine nihutab juba kogutud numbreid รผhe koha vรตrra vasakule, mis vabastab รผhiku positsiooni รคsja kogutud numbritele.tracSee taastab numbri vastupidises jรคrjekorras.

Pรถรถratud vรครคrtus vรตib รผletada tรคisarvu maksimumi 2147483647 ja murda tulemuse negatiivseks. Deklareeri akumulaator pikana vรตi vรตrdle vรครคrtusi stringidena.

Loe vรครคrtus Scanneri ja nextInt-iga ning edasta see samale รผmberpรถรถramise loogikale. Mรคhi lugemine try-plokki, et mittenumbriline sisend programmi ei krahhiks.

Tavaliselt jah, kui neilt koodi selgesรตnaliselt รผle vaadata palutakse. Nad harva mรคrgistavad seda ilma kรผsimata, seega testige alati tuntud palindroomi, nรคiteks 121, selle asemel, et usaldada mรถรถdaminnes ilmuvat nรคidet.

Kรผsimus testib paari reaga tsรผkli juhtimist, tรคisarvude aritmeetikat ja รครคremรคrkide arutluskรคiku. Samuti selgub, kas kandidaat kontrollib tehisintellekti loodud koodi enne selle esitamist.

Vรตta see postitus kokku jรคrgmiselt: