NSI (terminale) · Chapitre 1 · Exercice de TD
Vérification du parenthésage
Structures de données linéaires · niveau 3 (difficile)
Énoncé
Vérification du parenthésage.
Écrire une fonction parentheses_correctes(expr) qui renvoie True si la chaîne expr est correctement parenthésée (chaque parenthèse ouvrante a une fermante correspondante, dans le bon ordre), et False sinon.
Corrigé
On utilise une pile : on empile chaque ( et, à chaque ), on dépile. Si l'on tente de dépiler une pile vide, ou s'il reste des parenthèses ouvrantes à la fin, l'expression est incorrecte.
def parentheses_correctes(expr):
pile = []
for caractere in expr:
if caractere == "(":
pile.append(caractere) # parenthese ouvrante : on empile
elif caractere == ")":
if len(pile) == 0:
return False # une fermante sans ouvrante
pile.pop() # on apparie avec une ouvrante
return len(pile) == 0 # True si aucune ouvrante restante
# Tests
print(parentheses_correctes("(a+(b*c))")) # True
print(parentheses_correctes("(a+b))")) # False
print(parentheses_correctes("((a+b)")) # False
La chaîne est parcourue une fois, chaque caractère provoquant au plus une opération de pile en : le coût total est .
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 8 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.