题目
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/generate-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
一个简单的dfs,复杂度2^n。
刚开始学习python,这道题还是让我理解很多的。
代码
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
self.list=[]
self.str=""
self.dfs(n,0,0)
return self.list
def dfs(self,n:int,l:int,r:int):
if l==n and r==n:
self.list.append(self.str)
return
if l<n:
l=l+1
self.str=self.str+'('
self.dfs(n,l,r)
self.str=self.str[:-1]
l=l-1
if r<l:
r=r+1
self.str=self.str+')'
self.dfs(n,l,r)
self.str=self.str[:-1]
r=r-1
return