题目描述
生成给定数n对圆括号的所有可能组成的字符串,并保存在一个列表中返回。
方法一:
- 递归-使用两个整型变量记录当前生成的结果中还能继续添加的左右括号数,left和right,初始化为 n;
- 初始时只能添加左括号‘(’;只有在left<right的情况下,才能添加右括号;
- 因为之前已经有了限制条件left<right,所以生成一个完整字符串的结束条件是 right变量为0.
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
def generate(p,left,right,parens=[]):
if left: generate(p+'(',left-1,right)
if right>left: generate(p+')',left,right-1)
if not right: parens.append(p)
return parens
return generate('',n,n)
方法三:在原始函数上多加一个变量open记录开括号‘(’的个数,只有在开括号的个数>0的情况下,才能递归添加右/闭括号‘)’。