学习目标:
每日一题-括号生成学习内容:
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
解法:
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ans = []
self.generate([],n,ans)
return ans
def generate(self,A,n,ans):
if len(A) == 2*n:
if self.valid(A):
ans.append("".join(A))
else:
A.append('(')
self.generate(A,n,ans)
A.pop()
A.append(')')
self.generate(A,n,ans)
A.pop()
return
def valid(self,A):
bal = 0
for c in A:
if c == '(':
bal+=1
else:
bal-=1
if bal < 0:
return False
return bal == 0