Palindromes

 

On appelle "palindrome" un mot ou une phrase qui se lit de la même façon à l'endroit comme à l'envers, sans tenir compte des espaces.

exemple : le mot "ABCBA" est un palindrome.

La phrase "ESOPE RESTE ET SE REPOSE" (sans tenir compte des espaces on obtient le mot "ESOPERESTEETSEREPOSE") se lit de façon identique de la gauche vers la droite ou de la droite vers la gauche.

L'algorithme qui teste si un mot est un palindrome est extrêmement simple:

- un mot de longueur 0 (le mot vide, ou en programmation, la variable string '') est un palindrome

- un mot de longueur 1 (donc une lettre) est un palindrome

- un mot est un palindrome si sa première lettre est identique à sa dernière et si son intérieur (le sous-mot commençant à la deuxième position et finissant à l'avant dernière lettre: dans le cas de "ABCBA" le sous-mot est "BCB") est un palindrome.

On voit donc à cette dernière ligne l'apparition de la récursivité : "un mot est un palindrome si... et si son sous-mot est un palindrome".

Voici le programme qui teste si un mot est un palindrome:

 

function palindrome(s: string): boolean;
begin
  if length(s) < 2 then
    palindrome := true
  else
    if (s[1] = s[length(s)]) then
      palindrome := palindrome(copy(s, 2, length(s) - 2))
    else
      palindrome := false;
end;

 

Télécharger le code source Delphi