题目分析:有左括号可以随便加,右括号数要小于等于左括号
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
res = []
self.generate(n, n, "", res)
return res
def generate(self, left, right, str, res):
if left == 0 and right == 0:
res.append(str)
return
if left > 0:
# 左括号有剩余,可以加左括号
self.generate(left - 1, right, str + '(', res)
if right > left:
# 剩余还没有用的右括号比左括号多
self.generate(left, right - 1, str + ')', res)