Programme de nombres palindromes dans Java Utilisation de la boucle while et for

โšก Rรฉsumรฉ intelligent

Programme de nombres palindromes dans Java Cette fonction dรฉtermine si une valeur se lit de maniรจre identique de gauche ร  droite et de droite ร  gauche en inversant ses chiffres. Cet article prรฉsente l'algorithme, une version utilisant une boucle `while`, une version utilisant une boucle `for`, une mรฉthode basรฉe sur les chaรฎnes de caractรจres, la rรฉcursivitรฉ, les cas limites et une analyse de complexitรฉ avec des rรฉsultats vรฉrifiรฉs.

  • (I.e. Dรฉfinition principale : Un nombre palindrome reste inchangรฉ aprรจs que ses chiffres soient inversรฉs, comme 131, 393 et โ€‹โ€‹34043.
  • (I.e. RevTechnique ersal : L'opรฉrateur modulo extracIl s'agit du dernier chiffre, et la division entiรจre le supprime, un chiffre ร  la fois.
  • ๐Ÿงฎ Rรจgle de l'accumulateur : Chaque passage multiplie la somme cumulรฉe par dix avant d'ajouter le rรฉsultat fraรฎchement obtenu.tracted chiffre.
  • ๐Ÿ”‚ Choix de boucle : Une boucle while et une boucle for produisent des rรฉsultats identiques, ร  condition que la division apparaisse exactement une fois par itรฉration.
  • ๐Ÿ”ค Mรฉthode de chaรฎne : StringBuilder compare directement le texte en sens inverse et fonctionne aussi bien pour les mots que pour les nombres.
  • โš ๏ธ Cas extrรชmes : Les valeurs ร  un seul chiffre sont toujours des palindromes, les valeurs nรฉgatives ne le sont jamais, et les zรฉros de fin interrompent la comparaison numรฉrique.
  • ๏ธ Profil de complexitรฉ : Les deux versions de boucle s'exรฉcutent en un temps O(log n) proportionnel au nombre de chiffres et utilisent un espace supplรฉmentaire O(1).

Programme de nombres palindromes dans Java

Qu'est-ce qu'un nombre palindrome ?

A Numรฉro de palindrome Un palindrome est un nombre qui reste identique lorsqu'on l'inverse. Par exemple, 131. Lorsque ses chiffres sont inversรฉs, il reste le mรชme nombre. Un palindrome possรจde une symรฉtrie axiale. Le mรชme principe s'applique ร  un mot qui s'รฉcrit de la mรชme maniรจre lorsqu'on inverse ses lettres.

Exemples de nombres palindromes Java

121, 393, 34043, 111, 555, 48084

Exemples de mots palindromes

LOL, MADAM

Par dรฉfinition, chaque chiffre de 0 ร  9 est un palindrome, car inverser un chiffre donne le mรชme chiffre.

Algorithme des nombres palindromes

Ci-dessous figure la logique de l'algorithme des nombres palindromes. Java:

  • Rรฉcupรจre le numรฉro d'entrรฉe qui doit รชtre vรฉrifiรฉ pour รชtre un palindrome.
  • Copiez le nombre dans une variable temporaire et inversez-le.
  • Comparez le numรฉro inversรฉ et le numรฉro original.
  • S'ils sont identiques, le nombre est un ยซ nombre palindrome ยป.
  • Sinon, le nombre n'est pas un ยซ nombre palindrome ยป.

Seule l'inversion elle-mรชme requiert une attention particuliรจre. Deux opรฉrations arithmรฉtiques suffisent, comme indiquรฉ dans le tableau ci-dessous. tracles รฉvaluez pour la valeur 171.

Passรฉ un (nombre restant) dernierDigit = a % 10 somme = (somme * 10) + dernierDigit a = a / 10
1 171 1 1 17
2 17 7 17 1
3 1 1 171 0

Aprรจs le dernier passage, la somme est รฉgale ร  171, ce qui correspond ร  l'entrรฉe d'origine, confirmant ainsi que le nombre est un palindrome.

Comment vรฉrifier si le numรฉro d'entrรฉe est Palindrome ou non

Ci-dessous se trouve un programme palindrome. Java avec une boucle WHILE. La boucle continue tant qu'il reste des chiffres, et les instructions d'affichage rรฉvรจlent l'รฉtat de chaque variable ร  chaque itรฉration.

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 Sortie :

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

Programme pour vรฉrifier le palindrome en utilisant la boucle for

Voici une Java Programme pour calculer un palindrome ร  l'aide d'une boucle for. L'en-tรชte contient le test de sortie et la division, de sorte que le corps de la boucle ne doit pas effectuer de nouvelle division.

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 Sortie :

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

โš ๏ธ Attention : Une erreur frรฉquente consiste ร  conserver a = a / 10; ร  l'intรฉrieur du corps de la boucle for alors que l'en-tรชte contient dรฉjร  a /= 10Le nombre est ensuite divisรฉ deux fois ร  chaque passage, la moitiรฉ des chiffres sont ignorรฉs, et un vรฉritable palindrome tel que 121 est signalรฉ ร  tort comme n'รฉtant pas un palindrome.

Programme Palindrome en Java Utilisation de chaรฎnes de caractรจres Reverse

La conversion de la valeur en texte permet ร  StringBuilder de l'inverser en un seul appel. Cette mรฉthode fonctionne รฉgalement pour les mots, contrairement ร  l'approche numรฉrique.

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 Sortie :

true
true
false

Programme Palindrome en Java Utilisation de la rรฉcursivitรฉ

La rรฉcursivitรฉ compare la paire de caractรจres la plus externe, puis s'appelle elle-mรชme sur la section centrale qui se rรฉduit progressivement. La mรฉthode s'arrรชte lorsqu'il reste moins de deux caractรจres.

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 Sortie :

34043 is palindrome: true
12345 is palindrome: false

Cas limites et comparaison des mรฉthodes

Trois entrรฉes rendent les implรฉmentations naรฏves inopรฉrantes ; chaque version doit donc รชtre testรฉe avec ces entrรฉes avant utilisation.

  1. Nombres nรฉgatifs : Les valeurs telles que -121 ne sont jamais des palindromes, car le signe moins n'a pas d'รฉquivalent ร  la fin. Attention ! if (inputNumber < 0) return false;.
  2. Zรฉros finaux : La valeur 100 devient 1, la comparaison renvoie donc correctement faux. Seul le nombre 0 lui-mรชme est acceptรฉ parmi les valeurs se terminant par zรฉro.
  3. Dรฉpassement d'entier : RevSaisir un grand entier tel que 1 999 999 999 peut dรฉpasser la plage des entiers. Dรฉclarez la somme comme un entier long lorsque la valeur saisie risque d'approcher la limite.

Le tableau ci-dessous compare les quatre approches prรฉsentรฉes sur cette page.

Mรฉthode Complexitรฉ temporelle Complexitรฉ spatiale ล’uvres pour les mots Remarques
Boucle while O (log n) O (1) Non Dรฉmonstration la plus claire de l'inversion des chiffres
Pour boucle O (log n) O (1) Non Logique identique, division uniquement dans l'en-tรชte
StringBuilder inversรฉ O (n) O (n) Oui Code le plus court, alloue une nouvelle chaรฎne
Rรฉcursivitรฉ O (n) Pile O(n) Oui Utile pour les discussions d'entretien sur la rรฉcursivitรฉ

Le chiffre extracLe modรจle de tion utilisรฉ ici rรฉapparaรฎt dans de nombreux exercices. Continuez avec le la sรฉrie de Fibonacci dans Java, le Java programme pour vรฉrifier si un nombre premierainsi que, Bubble Algorithme de tri dans JavaPour la syntaxe de la boucle elle-mรชme, consultez la documentation. pour chaque boucle dans Java et le plus large Java tutoriel, et voir Java instruments ร  cordes pour la mรฉthode textuelle.

FAQ

Non. Le signe moins n'apparaรฎt qu'au dรฉbut, donc -121 inversรฉ donne 121-, ce qui ne correspond jamais. Ajoutez une condition prรฉalable qui renvoie faux pour toute valeur infรฉrieure ร  zรฉro.

La multiplication dรฉcale d'un rang vers la gauche les chiffres dรฉjร  rassemblรฉs, libรฉrant ainsi la position des unitรฉs pour le nouveau chiffre.tracLe chiffre ted permet de reconstruire le nombre en ordre inverse.

La valeur inversรฉe peut dรฉpasser la limite maximale d'un entier (2 147 483 647) et donner un rรฉsultat nรฉgatif. Dรฉclarez l'accumulateur comme un entier long ou comparez les valeurs comme des chaรฎnes de caractรจres.

Lisez la valeur avec Scanner et nextInt, puis transmettez-la ร  la mรชme logique d'inversion. Encapsulez la lecture dans un bloc try afin d'รฉviter que les entrรฉes non numรฉriques ne provoquent un plantage du programme.

Gรฉnรฉralement oui, lorsqu'on leur demande explicitement de vรฉrifier le code. Ils le signalent rarement spontanรฉment ; il est donc toujours prรฉfรฉrable de tester un palindrome connu comme 121 plutรดt que de se fier ร  un exemple validรฉ.

Cette question teste la maรฎtrise des boucles, le calcul sur les entiers et le raisonnement face aux cas limites en quelques lignes de code. Elle permet รฉgalement de vรฉrifier si le candidat vรฉrifie le code gรฉnรฉrรฉ par l'IA avant de le soumettre.

Rรฉsumez cet article avec :