Adloun

Python (école d'ingénieur) · Chapitre 1 · Exercice

Extraction des sous-chaînes palindromes

Bases de Python, variables et types

Énoncé

Écrire une fonction extraire_palindromes(chaine) qui retourne tous les palindromes (de longueur ) d'une chaîne en complexité .

Corrigé

def extraire_palindromes_optimise(chaine):
    n = len(chaine)
    palindromes = set()

    def expandir(gauche, droite):
        while gauche >= 0 and droite < n and chaine[gauche] == chaine[droite]:
            if droite - gauche + 1 >= 2:
                palindromes.add(chaine[gauche:droite+1])
            gauche -= 1
            droite += 1

    for centre in range(n):
        expandir(centre, centre)      # Impair
        expandir(centre, centre + 1)  # Pair
    return list(palindromes)

Explication : L'algorithme naïve en vérifie toutes les sous-chaînes possibles. La version optimisée en s'étend depuis les centres de symétrie possibles.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →