022.括号生成
给出 n 代表生成括号的对数,写出一个函数,生成所有可能的并且有效的括号组合。
n = 3 res=["((()))","(()())","(())()","()(())","()()()"]
class Solution: # DFS
def generateParenthesis(self, n: int) -> List[str]:
ans = []
def generate(S='', left=0, right=0):# left与right:已经生成的左右括号的个数
if len(S) == 2 * n: # n对括号有2n个字符
ans.append(S) # S:已建造的括号字符串
return
if left < n:
generate(S + '(', left + 1, right)
if right < left: # 只有右括号少了,才可以生成一个右括号
generate(S + ')', left, right + 1)
generate()
return ans