题目:输入括号对数n,返回合法的括号形式
def generateParenthesis(n):
res = []
gen(0,0,n,res,'')
return res
def gen(left,right,n,res,path):
if left == n and right == n:
res.append(path)
return
if left < n:
gen(left+1,right,n,res,path+'(')
if left>right and right<n:
gen(left,right+1,n,res,path+')')
注:
使用递归来做,用left,right分别表示左右括号的使用数量。当两者使用数量为n时,表示已经找出一种情况。如果left小于n,则可以继续加入'(';右括号的情况不仅要小于n,还需要保证right<left,才能保证最终括号的合法性。