生成匹配的括号
1.题目
正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
2.思路
1)括号组合第一个数肯定是 (
2) 左括号 ( 的个数肯定大于等于右括号 ) 的个数,也就是说只有当组合中的左括号数小于右括号数时,才能增加右括号
3)最后一个肯定是右括号 )
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
res = []
track = []
def backtrack(track,leftcount,rightcount):
if leftcount==0 and rightcount==0:
res.append(track)
return
if leftcount>0:
track += '('
backtrack(track,leftcount-1,rightcount)
track = track[:-1]
if rightcount>0 and leftcount<rightcount:
# 添加右括号
track += ')'
backtrack(track,leftcount,rightcount-1)
track = track[:-1]
track ='('
backtrack(track,n-1,n)
return res