Vérifier si un nombre ou un string est un palindrome en Java

Comment vérifier si un nombre ou un string est un palindrome ou non est une question populaire. Un nombre est un palindrome si son inverse reste le même comme 404. Par contre 412 est un non palindrome parce que son inverse est 214. Pour vérifier si un nombre ou un string est palindrome, on doit poser en premier la question comment inverser un nombre ou un string en Java? Vous pouvez résolue ce problème en utilisant une API ou en utilisant uniquement les bases de programmation comme les boucles, les conditions, variables et opérateurs logiques. Il est recommandé de programmer tout seul parce que ce simple problème peut bien montrer un vrai programmeur qui peut coder et l'autre qui reçoit tout sur un plat.

palindrome récursive et itérative en java

Vérifier si un nombre entier est un palindrome

Ceci est un programme Java qui vérifie si un nombre est un palindrome ou non. Ce programme n'utilise aucune API toutefois il utilise la division et le modulo pour tester si un integer est un palindrome ou non. Cette vérification est encapsulée dans la méthode reverse() et estPalinsrome(int nombre).

public class Palindrome {

public static void main(String args[]){

int[] nombres = {0, 2, 113, 11, 1443, 1441, 1654, 19891};

for(int nombre: nombres){
System.out.println(nombre +" est un palindrome? "
+ estPalindrome(nombre));
}
}

private static boolean estPalindrome(int nombre) {
if(nombre == inverse(nombre)){
return true;
}
return false;
}

private static int inverse(int nombre){
int inverse = 0;
while(nombre != 0){
inverse = inverse*10 + nombre%10;
nombre = nombre/10;
}
return inverse;
}
}
L'exécution de ce programme donne ce résultat:

0 est un palindrome? true
2 est un palindrome? true
113 est un palindrome? false
11 est un palindrome? true
1443 est un palindrome? false
1441 est un palindrome? true
1654 est un palindrome? false
19891 est un palindrome? true
Ce programme Java prend un tableau d'entiers et vérifie si un nombre est un palindrome ou non.

Vérifier si une chaîne de caractères est un palindrome

Une chaîne de caractères est appelée palindrome si elle est égale à son inverse, par exemple "radar" est un palindrome, son inverse reste "radar". Autres exemples comme: "ababa", "elle", "anna".

Palindrome itérative

import java.util.Scanner;

public class Palindrome_string {

public static void main(String args[])
{
String mot, mot_inverse = "";
Scanner in = new Scanner(System.in);

System.out.println("Entrer un mot ");
mot = in.nextLine();

if (pal(mot))
System.out.println("'"+mot + "' est un palindrome");
else
System.out.println("'"+mot + "' n'est pas un palindrome");
}

public static boolean pal(String mot){
int i=0, longueur=mot.length()-1;
boolean egale=true;
/*tester le premier caractère avec le dernier
*et s'ils sont égaux, le programme continu
*à dérouler la boucle while et tester
*le caractère suivant(i+1 avec longeur-(i+1))
*jusqu'à i soit égale à longueur/2,
*, sinon le booléen egale reçoit false
*donc, la fonction pal retourne false
*/
while(i<longueur/2 && egale){
if(mot.charAt(i)==mot.charAt(longueur-i))
egale = true;
else
egale = false;
i++;
}
return egale;
}
}
Résultat:

Entrer un mot 
rotor
'rotor' est un palindrome

palindrome récursive

public class Palindrome_recursive {

public static void main(String[] args) {
String[] strings = {"ici", "rumeur", "Leila",
"lol", "salut", "non"};

for(String string: strings){
if(estPalindrome(string))
System.out.println("'"+string + "' est un palindrome");
else
System.out.println("'"+string + "' n'est pas un palindrome");
}
}

public static boolean estPalindrome(String s)
{
//si la longueur est égale à 0 ou à 1
//donc c'est un palindrome
if(s.length() == 0 || s.length() == 1)
return true;
if(s.charAt(0) == s.charAt(s.length()-1))
/*
* tester si le premier et le dernier caractère
* sont les memes alors répéter le meme traitment
* avec la sous-chaine avec le premier et le
* dernier caractère jusqu'à atteindre la
* première condition
*/
return estPalindrome(s.substring(1, s.length()-1));

/*
* si la condition if est fausse, donc elle retourne
* false
*/
return false;
}
}
Résultat:

'ici' est un palindrome
'rumeur' n'est pas un palindrome
'Leila' n'est pas un palindrome
'lol' est un palindrome
'salut' n'est pas un palindrome
'non' est un palindrome
Les deux codes sont sensibles aux minuscules et les majuscules, vous pouvez les modifier pour qu'ils ignorent les majuscules en convertissant les deux strings en minuscules ou majuscules,

Comme on a dit, un bon programmeur doit toujours s’entraîner sur des exercices qui paraissent faciles et en particulier les débutants de programmation Java qui viennent juste de commencer l'apprentissage de la programmation Java.

Références:
Liste de palindromes français
Stackoverflow: Check string for palindrome
Java program to check palindrome