class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
# 回溯法
if n <= 0:
return []
result = []
self.sloution_(n, result, 0, 0, "")
return result
# n代表生成括号的对数,result为存放生成括号的数组,left和right分别为--
# 左右括号的个数,str为括号形成的字符串,相当于目前括号组合的样子
def sloution_(self, n, result, left, right, str_):
# 先判断,当右括号数量大于左括号,形成的组合一定是不满足要求的
# 例如)右括号开头,此时right=1>left=0,还有())此时组合最终肯定也不满足要求
if right > left:
return
# 终止条件
if left == right == n:
result.append(str_)
return
# 递归
if left < n:
self.sloution_(n, result, left+1, right, str_ + '(')
if right < n:
self.sloution_(n, result, left, right+1, str_ + ')')