22. 括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。
Example
input |
---|
n = 3 |
output |
[ "((()))", "(()())", "(())()", "()(())", "()()()" ] |
Note
无
思路
递归解决问题,具体见代码
思路来自之前检查“括号是否合格”中用栈来检验是否匹配
代码如下
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
def dfs(s, ans, l , n):
if ans < 0 or l > n:
return
if ans == 0 and l == n:
res.append(s)
return
dfs(s + '(', ans+1, l+1, n)
dfs(s + ')', ans-1, l, n)
res = []
dfs('', 0, 0, n)
return res