Menu
CoddyTech

Generate Parentheses

括弧の文字列は、左から右に読んだとき、)の数が(の数を上回らず、最後に2つの数が等しければ、正しい形式です。したがって、(())()は正しい形式ですが、())(は正しくありません。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組すべてを開き、(はソート順で先になるため、リストの先頭になります。()()()は各組をすぐに閉じるため、最後になります。

lock icon提出時に隠しテスト+10件

challenge icon

発展問題

生成せずに、n組の整形式文字列の個数を数えられますか?

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

ケース1

ケース2

入力

n = 3

期待値

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