Menu
CoddyTech

Generate Parentheses

Une chaîne de parenthèses est bien formée lorsque, en la lisant de gauche à droite, le nombre de ) ne dépasse jamais celui de (, et que les deux nombres sont égaux à la fin. Ainsi, (())() est bien formée, tandis que ())( ne l’est pas : son troisième caractère ferme une paire qui n’a jamais été ouverte.

Étant donné un entier n, renvoie toutes les chaînes bien formées composées de n parenthèses ouvrantes et de n parenthèses fermantes, triées dans l’ordre lexicographique, où ( précède ).

Fonction

generateParenthesis(n: integer) → string-array
ninteger
le nombre de paires de parenthèses
Renvoiestring-array
chaque chaîne bien formée de n paires, dans l’ordre lexicographique

Contraintes

  • 1 ≤ n ≤ 8
  • Pour n = 8, la réponse contient 1 430 chaînes.

Exemples

Entrée
n = 3
Sortie
["((()))", "(()())", "(())()", "()(())", "()()()"]
Explication
Trois paires donnent cinq chaînes bien formées. ((())) ouvre les trois d’abord, donc cette chaîne est en premier dans l’ordre de tri ; ()()() ferme chaque paire immédiatement et vient en dernier.
challenge icon

Pour aller plus loin

Peux-tu compter les chaînes bien formées pour n paires sans les générer ?

Réinitialiser le code
def generateParenthesis(n):
    # Écrivez le code ici

Test #1

Test #2

Argument

n = 3

Résultat attendu

["((()))", "(()())", "(())()", "()(())", "()()()"]