Nous appelons un groupe de parens le paren ouvert (, son paren proche correspondant )et tout ce qu'il contient .
Un groupe ou une chaîne de parens est appelé équilibré entre parenthèses s'il ne contient rien ou seulement 2 groupes de parens équilibrés entre parenthèses.
Par exemple:
The string "(()())()" is parenthesly balanced
( )() Because it contains exactly 2 parenthesly balanced parens groups
()() The left one is parenthesly balanced because it contains 2 parenthesly balanced parens groups (balanced because they are empty). The right one is parenthesly balanced because it contains nothing.
Également:
The string "(()(()))()" is not parenthesly balanced
( )() Because it contains a parens group that is not parenthesly balanced: the left one
()( ) The left one is not balanced because it contains a parens group that is not balanced: the right one
() The right one is not balanced because it only contains one balanced group.
Ainsi, une chaîne ou un groupe de parenthèses équilibré entre parenthèses devrait:
- Ne contient rien du tout.
- Ou contenir seulement et exactement 2 groupes de parens équilibrés entre parenthèses. Il ne doit contenir rien d'autre.
Tâche:
Votre tâche consiste à écrire une fonction ou un programme qui vérifie si une chaîne donnée est équilibrée entre parenthèses ou non.
Contribution:
L'entrée sera une chaîne ou une liste de caractères ou quelque chose de similaire. Vous pouvez supposer que la chaîne ne comprendra que les caractères '('et ')'. Vous pouvez également supposer que chaque paren ouvert (aura son paren proche correspondant ), alors ne vous inquiétez pas pour les chaînes comme "((("ou ")("ou "(())("...
Note: Comme mentionné par @DigitalTrauma dans son commentaire ci - dessous, il est autorisé à subtitute le ()combo par d' autres caractères ( par exemple <>, []...), si elle est à l' origine du travail supplémentaire pour fuir dans certaines langues
Production:
N'importe quoi pour signaler si la chaîne est équilibrée entre parenthèses ou non (vrai ou faux, 1 ou 0, ...). Veuillez inclure dans votre réponse ce que votre fonction / programme devrait générer.
Exemples:
"" => True
"()()" => True
"()(()())" => True
"(()(()(()())))(()())" => True
"(((((((()())())())())())())())()" => True
"()" => False
"()()()" => False
"(())()" => False
"()(()(())())" => False
"(()())(((((()())()))())())" => False
"()(()()()())" => False
"()(()(()())()())" => False
Les deux derniers exemples ont vraiment fait la différence!
Bonne chance!
"(()())()"serait représenté comme [0, 0, 1, 0, 1, 1, 0, 1]. Cela supprimerait la nécessité de convertir l'entrée en code de caractères, puis de la soustraire.
