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.