Information

Author(s) Vincent Branders, Pierre Dupont
Deadline 27/03/2024 14:00:00
Submission limit No limitation

Sign in

[TP06] Palindromes - Itératif

Un palindrome est une séquence qui est indépendante du sens de lecture, c'est-à-dire une séquence qui est identique qu'elle soit lue de gauche à droite ou de droite à gauche. Par exemple, les mots radar et kayak sont des palindromes, le mot bonbon n'en est pas un.

Vous êtes chargés d'implémenter les fonctions is_palindrome_rec et is_palindrome étant donné les propriétés suivantes :

  • Une séquence contenant aucun caractère peut être considérée comme un palindrome.
  • Une séquence contenant exactement un caractère est un palindrome.
  • Une séquence est un palindrome si le premier et dernier caractère sont identiques, que le deuxième et avant-dernier caractère sont identiques, ...

Vous noterez que les chaînes de caractères Python (str) peuvent être vues comme des tableaux immuables. Cela signifie :

  • que vous pouvez utiliser les str comme des tableaux (list), mais que vous ne pouvez pas modifier leur contenu
  • si s = "hello" alors s[0:2] renvoie "he" et s[2:] renvoie "llo" en \(O(1)\)
  • s[i] renvoie le caractère à l'indice i du str s : s[1] renvoie e en \(O(1)\)

Question 1: Identification de palindromes (itératif)

Vous êtes chargés d'implémenter la fonction suivante en Python. Pour préparer votre code, vous pouvez télécharger le fichier palindrome.py qui contient la signature de la fonction et quelques exemples de tests.

Note: Lorsqu'il vous est demandé d'implémenter une fonction, vous êtes invités à ne remplir que le corps de la fonction à implémenter.

def is_palindrome(s):
    """
    pre: `s` est un str
    post: détermine itérativement si `s` est un palindrome ou non
    """
Question 2: Complexité temporelle

Quelle est la complexité temporelle de l’algorithme ? Choisissez la borne la plus simple et la plus stricte possible.

On suppose que vous n'effectuez pas d'opérations inutiles.