Menu
CoddyTech

Generate Parentheses

中等回溯递归python iconjava iconcpp iconc iconjs icon+10

从左到右读取一串括号时,如果 ) 的数量从未超过 ( 的数量,并且最后两者数量相等,那么这串括号就是合法的。因此,(())() 是合法的,而 ())( 不合法:它的第三个字符试图闭合一个从未打开的括号。

给定一个整数 n,返回所有由 n 个左括号和 n 个右括号组成的合法字符串,并按字典序排序,其中 ( 排在 ) 前面。

函数

generateParenthesis(n: integer) → string-array
ninteger
括号对的数量
返回值string-array
按字典序排列的所有由 n 对括号组成的格式正确的字符串

约束条件

  • 1 ≤ n ≤ 8
  • 当 n = 8 时,答案中有 1,430 个字符串。

示例

输入
n = 3
输出
["((()))", "(()())", "(())()", "()(())", "()()()"]
解释
三组配对可以组成 5 个格式正确的字符串。((())) 先打开全部三组,因此排在最前面;()()() 每次立即闭合一组,因此排在最后面。
challenge icon

进阶

不生成这些字符串,你能统计出由 n 对括号组成的合法字符串有多少个吗?

重置代码
def generateParenthesis(n):
    # 在这里编写代码

测试 #1

测试 #2

参数

n = 3

预期输出

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