Menu
CoddyTech

Generate Parentheses

Une chaîne de parenthèses est bien formée lorsque, lue 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, contrairement à ())( : son troisième caractère ferme une paire qui n’a jamais été ouverte.

On vous donne un entier n. Renvoyez 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
toute chaîne bien formée de n paires, dans l’ordre lexicographique

Contraintes

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

Exemples

Entrée
n = 3
Sortie
["((()))", "(()())", "(())()", "()(())", "()()()"]
Explication
Trois paires peuvent être disposées de cinq façons bien formées. ((())) ouvre les trois avant d’en fermer une, et puisque ( se trie en premier, cette forme ouvre la liste ; ()()() ferme chaque paire aussitôt et arrive en dernier.

lock icon+10 tests cachés à la soumission

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
Cas de test

Cas 1

Cas 2

Entrée

n = 3

Attendu

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