Menu
CoddyTech

Generate Parentheses

Ciąg nawiasów jest poprawny, gdy czytając go od lewej do prawej, liczba znaków ) nigdy nie przewyższa liczby znaków (, a na końcu obie liczby są równe. Zatem (())() jest poprawny, natomiast ())( nie jest: jego trzeci znak zamyka parę, która nigdy nie została otwarta.

Otrzymujesz liczbę całkowitą n. Zwróć wszystkie poprawne ciągi złożone z n nawiasów otwierających i n nawiasów zamykających, posortowane leksykograficznie, gdzie ( występuje przed ).

Funkcja

generateParenthesis(n: integer) → string-array
ninteger
liczba par nawiasów
Zwracastring-array
każdy poprawny 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 można ułożyć na pięć poprawnych sposobów. ((())) otwiera wszystkie trzy, zanim zamknie którąkolwiek, a ponieważ ( sortuje się jako pierwsze, ten układ otwiera listę; ()()() od razu zamyka każdą parę i znajduje się na końcu.

lock icon+10 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Czy potrafisz policzyć poprawnie sformowane ciągi dla n par bez ich generowania?

Zresetuj kod
def generateParenthesis(n):
    # Napisz tutaj kod
Przypadki testowe

Przypadek 1

Przypadek 2

Wejście

n = 3

Oczekiwane

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