/* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Fevrier 2005 */ import java.io.*; public class TestPalindrome { static BufferedReader flux = new BufferedReader(new InputStreamReader(System.in)); /* Fonction de creation d'un tableau de caracteres */ /* initialise avec tous les caracteres */ /* d'une chaine de caracteres */ /* s : chaine de caracteres a traiter */ /* Resultat fonction : tableau de caractere */ public static char [] initTableau(String s) { int n = s.length(); char [] t = new char[n]; for ( int i = 0 ; i < n ; i++ ) t[i] = s.charAt(i); return(t); } /* Fonction de creation d'une chaine de caracteres */ /* initialisee avec tous les caracteres */ /* d'une tableau de caracteres */ /* t : tableau de caractere a traiter */ /* Resultat fonction : chaine de caracteres */ public static String chaine(char [] t) { String s = ""; for ( int i = 0 ; i < t.length ; i++ ) s = s+t[i]; return(s); } /* Fonction d'affichage d'un tableau de caracteres */ /* t : tableau de caractere a afficher */ public static void afficheTableau(char [] t) { for ( int i = 0 ; i < t.length ; i++ ) System.out.print(t[i]); } /* Fonction de test si la suite de caracteres */ /* d'un tableau de caractere est un palindrome */ /* t : tableau de caractere a inverser */ /* Resultat fonction : booleen */ public static boolean testPalindrome(char [] t) { /* Calcul de la taille du tableau t */ int n = t.length; /* Definition et initialisation a 0 d'un entier */ /* utilise comme indice pour parcourir la suite */ /* de caractere du tableau */ int i = 0; /* Boucle tant que avec deux conditions d'arret */ /* composees par et: */ /* - On a trouver deux caracteres differents */ /* aux indices i et n-1-i -> ce n'est pas un palindrome */ /* - On a parcouru plus de (l sur 2) caracteres dans */ /* le tableau -> c'est un palindrome */ while ( ( t[i] == t[n-1-i] ) && ( i < n/2 ) ) i++; /* Calcul du resultat */ return(t[i] == t[n-1-i]); } /* Fonction principale */ public static void main(String [] args) throws IOException { /* Test de la chaine "ABCDEFGHI" */ { char [] mot = initTableau("ABCDEFGHI"); System.out.println(chaine(mot)+" : "+testPalindrome(mot)); } /* Test de la chaine "KAYAK" */ { char [] mot = initTableau("KAYAK"); System.out.println(chaine(mot)+" : "+testPalindrome(mot)); } /* Definition d'une boucle infinie de lecture */ /* au clavier d'une chaine de caracteres, calcul */ /* du tableau de caractere correspondant a cette chaine */ /* et test de ce tableau */ while ( true ) { System.out.print("Quelle est la chaine a tester? : "); String s = flux.readLine(); char [] mot = initTableau(s); System.out.println(chaine(mot)+" : "+testPalindrome(mot)); } } }