Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
We can use dfs to solve this problem. We can maintain two variables. One will record how many left parentheses have been used, another one will record how many right parentheses have been used. if the number of left parentheses is smaller than n, then we can add left parentheses, else if the number of left parentheses is bigger than left's, then we can add right parentheses.
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
res=[]
self.helper(n,0,0,[],res)
return res
def helper(self,n,l,r,cur,res):
if l+r==2*n:
res.append("".join(cur))
return
if l<n:
self.helper(n,l+1,r,cur+["("],res)
if r<l:
self.helper(n,l,r+1,cur+[")"],res)
本文介绍了一个使用深度优先搜索(DFS)策略生成所有有效括号组合的算法。通过递归方式,当左括号数量小于n时添加左括号,当右括号数量少于左括号时添加右括号,直至生成长度为2n的有效字符串。
1339

被折叠的 条评论
为什么被折叠?



