题目大意:给定n表示括号的对数,输出所有有效的括号的组合
题目分析:递归求解,用leftnum和rightnum分别表示剩余可用的左括号和右括号的个数,当使用了一个( ,则leftnum-1; 同理,使用了一个 ),则rightnum-1。 当leftnum>0时,可用( 填充; 当leftnum<rightnum,并且rightnum>0时,表示当前可用 )填充,直到leftnum和rightnum都等于0为止。
代码展示:
class Solution:
def generateParenthesis(self, n):
res = []
leftnum = n
rightnum = n
string = ""
self.generate(leftnum,rightnum,string,res)
return res
def generate(self,leftnum,rightnum,string,res):
if leftnum==0 and rightnum==0:
res.append(string)
if leftnum>0:
self.generate(leftnum-1,rightnum,string+"(",res)
if leftnum<rightnum and rightnum>0:
self.generate(leftnum,rightnum-1,string+")",res)