Sujet 03
On dispose de chaînes de caractères contenant uniquement des parenthèses ouvrantes et
fermantes.
Un parenthésage est correct si :
Les parenthésages
On dispose du code de la classe
On souhaite programmer une fonction
Cette fonction utilise une pile et suit le principe suivant : en parcourant la chaîne de gauche à droite, si on trouve une parenthèse ouvrante, on l’empile au sommet de la pile et si on trouve une parenthèse fermante, on dépile (si 2 Elle est, par contre, mal parenthésée :
Un parenthésage est correct si :
- le nombre de parenthèses ouvrantes de la chaîne est égal au nombre de parenthèses fermantes ;
- en parcourant la chaîne de gauche à droite, le nombre de parenthèses déjà ouvertes doit être, à tout moment, supérieur ou égal au nombre de parenthèses déjà fermées.
((()())(()))
est un parenthésage correct. Les parenthésages
())(()
et (())(()
sont, eux, incorrects. On dispose du code de la classe
Pile
ci-contre.
On souhaite programmer une fonction
bon_parenthesage
qui prend en paramètre une chaîne de caractères ch
formée de parenthèses et renvoie True
si la chaîne est bien
parenthésée et False
sinon. Cette fonction utilise une pile et suit le principe suivant : en parcourant la chaîne de gauche à droite, si on trouve une parenthèse ouvrante, on l’empile au sommet de la pile et si on trouve une parenthèse fermante, on dépile (si 2 Elle est, par contre, mal parenthésée :
- si dans le parcours, on trouve une parenthèse fermante, alors que la pile est vide ;
- ou si, à la fin du parcours, la pile n’est pas vide.
Compléter le code de la fonction
bon_parenthesage
ci-contre.
Exemple :
>>> bon_parenthesage("((()())(()))")
True
>>> bon_parenthesage("())(()")
False
>>> bon_parenthesage("(())(()")
False