Menu
CoddyTech

Generate Parentheses

左から右に読んだとき、)の個数が(の個数を上回ることがなく、最後に両者の個数が等しい場合、括弧の文字列は整形式です。したがって、(())()は整形式ですが、())(はそうではありません。3文字目が、対応する開き括弧のない閉じ括弧だからです。

整数nが与えられたとき、開き括弧(がn個、閉じ括弧)がn個からなる整形式の文字列をすべて返してください。(が)より先になる辞書順に並べます。

関数

generateParenthesis(n: integer) → string-array
ninteger
括弧のペアの数
戻り値string-array
n組のすべての整形式文字列を辞書順に

制約

  • 1 ≤ n ≤ 8
  • 答えは n = 8 のとき、1,430 個の文字列です。

例

入力
n = 3
出力
["((()))", "(()())", "(())()", "()(())", "()()()"]
説明
3組のペアから、整形式の文字列が5つできます。((()))は最初に3組すべてを開くため、最初に並びます。()()()は各ペアをすぐに閉じるため、最後に並びます。
challenge icon

発展問題

n 組の正しく構成された文字列を、生成せずに数えられますか?

コードをリセット
def generateParenthesis(n):
    # ここにコードを書いてください

テスト #1

テスト #2

引数

n = 3

期待される出力

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