Exercice : Palindrome

  1. Ecrire une classe Palindrome1 contenant deux méthodes statiques :
    • Une méthode inverser, qui prend en paramètre une String et renvoie une String.
      Par exemple, inverse("azerty") = "ytreza".
    • La méthode main(), qui doit tester qu'elle a été appelée avec un seul argument (tableau args).
      Si la méthode n'est pas appelée avec un seul argument, elle doit afficher un message d'erreur et terminer l'exécution.

      Dans le cas où l'appel est correct, affiche le mot entré en paramètre, l'inverse de ce mot, et indique si c'est un palindrome.
    • Exemples d'exécution :
      java Palindrome1 
      La fonction doit être appelée avec un seul argument
      Exemple : java Palindrome1 mot
      
      java Palindrome1 azerty
      mot : azerty
      inverse : ytreza
      azerty n'est pas un palindrome
      
      java Palindrome1 ressasser
      mot : ressasser
      inverse : ressasser
      ressasser est un palindrome
                  
  2. Ecrire une classe Palindrome2 contenant trois méthodes statiques :
    • Une méthode inverser, identique à celle de la question précédente.
    • Une méthode normaliser, qui prend en paramètre une String et renvoie une String.
      Ele doit supprimer les espaces, apostrophes et tous les caractères qui ne sont pas alphabétiques dans la chaîne passée en paramètre.
      Par exemple normaliser("Elu par cette crapule") = "eluparcettecrapule".
    • La méthode main() se comportera différemment que dans Palindrome1 : Au lieu d'utiliser args, on va utiliser un Scanner pour attendre une saisie de l'utilisateur :
      java.util.Scanner scanner = new java.util.Scanner(System.in);
      String str, inverse;
      
      while(true){
          System.out.println("\nSaisissez une chaîne de caractères ou Q pour terminer");
          str = scanner.nextLine();
          if(str.equals("Q")){
              break;
          }
          // A compléter
      }
                      
      Exemple d'exécution :
      Saisissez une chaîne de caractères ou Q pour terminer
      une chaine de caracteres
      mot normalisé : unechainedecaracteres
      inverse : seretcaracedeniahcenu
      'unechainedecaracteres' n'est pas un palindrome
      
      Saisissez une chaîne de caractères ou Q pour terminer
      Élu par cette crapule                                                                    
      mot normalisé : éluparcettecrapule
      inverse : eluparcettecrapulé
      'éluparcettecrapule' n'est pas un palindrome
      
      Saisissez une chaîne de caractères ou Q pour terminer
      Elu par cette crapule
      mot normalisé : eluparcettecrapule
      inverse : eluparcettecrapule
      'eluparcettecrapule' est un palindrome
      
      Saisissez une chaîne de caractères ou Q pour terminer
      Q
                      
    Vous pouvez tester avec des palindromes trouvés sur la liste de palindromes français sur wikipedia (mais attention, normaliser() ne gère pas les accents.
  3. Pour ceux qui ont fini : Comment améliorer normaliser() pour gérer aussi les caractères accentués ?