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.

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.
- 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;. - 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.
- 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.
