一、题目
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
二、思路
和前两道题一样,用回溯做最简单,也好理解。因为题目类型和前两道题类似,所以就不多做说明了。
三、代码
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ans=[]
def backtrack(curr,left,right):
if len(curr)==2*n:
ans.append(''.join(curr))
return ans
if left<n:
curr.append("(")
backtrack(curr,left+1,right)
curr.pop()
if right<left:
curr.append(")")
backtrack(curr,left,right+1)
curr.pop()
backtrack([],0,0)
return ans