Menu
CoddyTech

Generate Parentheses

Строка со скобками считается правильно сформированной, если при чтении слева направо количество ) никогда не превышает количество (, а в конце эти количества равны. Поэтому (())() — правильно сформированная строка, а ())( — нет: её третий символ закрывает пару, которая не была открыта.

Дано целое число n. Верните все правильно сформированные строки из n открывающих и n закрывающих скобок в лексикографическом порядке, в котором ( идёт перед ).

Функция

generateParenthesis(n: integer) → string-array
ninteger
количество пар скобок
Возвращаетstring-array
каждая правильно сформированная строка из n пар, в лексикографическом порядке

Ограничения

  • 1 ≤ n ≤ 8
  • Для n = 8 ответ содержит 1,430 строк.

Примеры

Ввод
n = 3
Вывод
["((()))", "(()())", "(())()", "()(())", "()()()"]
Пояснение
Три пары образуют пять правильно сформированных строк. ((())) сначала открывает все три, поэтому сортируется первым; ()()() сразу закрывает каждую пару и оказывается последней.
challenge icon

Дополнительный вопрос

Можешь подсчитать количество правильно составленных строк для n пар, не генерируя их?

Сбросить код
def generateParenthesis(n):
    # Напишите код здесь

Тест #1

Тест #2

Аргумент

n = 3

Ожидаемый вывод

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