Menu
CoddyTech

Generate Parentheses

Ciąg nawiasów jest poprawnie zbudowany, gdy czytany od lewej do prawej licznik ) nigdy nie wyprzedza licznika (, a na końcu oba liczniki są równe. Zatem (())() jest poprawnie zbudowany, a ())( nie: jego trzeci znak zamyka parę, która nigdy nie została otwarta.

Dla danej liczby całkowitej n zwróć każdy poprawnie zbudowany ciąg zawierający n nawiasów otwierających i n nawiasów zamykających, posortowany w porządku leksykograficznym, w którym ( występuje przed ).

Funkcja

generateParenthesis(n: integer) → string-array
ninteger
liczba par nawiasów
Zwracastring-array
każdy poprawnie utworzony ciąg n par, w porządku leksykograficznym

Ograniczenia

  • 1 ≤ n ≤ 8
  • Dla n = 8 odpowiedź obejmuje 1,430 ciągów znaków.

Przykłady

Wejście
n = 3
Wyjście
["((()))", "(()())", "(())()", "()(())", "()()()"]
Wyjaśnienie
Trzy pary tworzą pięć poprawnie uformowanych ciągów. ((())) otwiera najpierw wszystkie trzy, więc jest sortowany jako pierwszy; ()()() od razu zamyka każdą parę i zajmuje ostatnie miejsce.
challenge icon

Pytanie dodatkowe

Czy potrafisz policzyć poprawnie zbudowane ciągi dla n par, nie generując ich?

Zresetuj kod
def generateParenthesis(n):
    # Wpisz tutaj kod

Test #1

Test #2

Argument

n = 3

Oczekiwany wynik

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