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
- 9 autres exercices corrigés dans ce chapitre, et 9 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.