递归
class Solution:
def __init__(self):
self.n = None
self.str = []
self.res = []
def judge(self):
if self.str.count('(') == self.str.count(')') == self.n:
ll = []
for i in self.str:
if i == '(':
if ')' not in ll:
ll.append('(')
else:
return False
else:
if '(' not in ll:
return False
else:
ll.remove('(')
return True
return False
def dfs(self):
if self.judge():
self.res.append(''.join(i for i in self.str))
return
if len(self.str) > 2 * self.n:
return
self.str.append('(')
self.dfs()
self.str.pop(-1)
self.str.append(')')
self.dfs()
self.str.pop(-1)
def generateParenthesis(self, n):
self.n = n
self.dfs()
return self.res
a = Solution()
print(a.generateParenthesis(3))