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
Вывод
["((()))", "(()())", "(())()", "()(())", "()()()"]
Пояснение
Три пары можно расположить пятью правильными способами. ((())) открывает все три пары, прежде чем закрыть любую из них; поскольку ( сортируется первым, этот вариант стоит в начале списка; ()()() сразу закрывает каждую пару и стоит в конце.

lock icon+10 скрытых тестов при отправке

challenge icon

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

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

Сбросить код
def generateParenthesis(n):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Ввод

n = 3

Ожидается

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