当前位置: 首页 > 后端技术 > Python

力扣22.括号生成Python实现

时间:2023-03-25 23:40:09 Python

题目要求:思路:n的个数既是左括号的个数又是右括号的个数。定义一个res列表,以递归的方式返回所有的结果。给递归函数一个空字符串来标记左括号的剩余个数和右括号的剩余个数,如果剩余的左括号数大于0,则在字符串中添加“(”,如果剩余的右括号数括号大于0,在字符串中添加")",如果剩余左括号的个数与右括号的个数为0,则将当前字符串追加到res,如果剩余的左括号的个数大于该个数剩下的右括号,直接在递归函数中返回核心代码:classSolution(object):defgenerateParenthesis(self,n):""":typen:int:rtype:List[str]"""#Ifn为0,直接返回一个空列表ifn==0:return[]#要返回的结果集res=[]self.helper(n,n,",res)returnres#定义一个递归函数defhelper(self,left,right,mystr,res):#如果剩余的左括号数量大于剩余的右括号数量,直接returnifleft>right:return#如果左括号和右括号的剩余个数为0,则将当前字符串追加到resifleft==0andright==0:res.append(mystr)#如果剩余的left括号的个数大于0,则加上"("ifleft>0:self.helper(left-1,right,mystr+"(",res)#如果剩下的右括号的个数大于0,则添加字符Add")"tothestringifright>0:self.helper(left,right-1,mystr+")",res)完整代码classSolution(object):defgenerateParenthesis(self,n):""":typen:int:rtype:List[str]"""如果n==0:return[]res=[]self.helper(n,n,",res)returnresdefhelper(self,left,right,mystr,res):ifleft>right:returnifleft==0andright==0:res.append(mystr)ifleft>0:self.helper(left-1,right,mystr+"(",res)如果右>0:self.helper(left,right-1,mystr+")",res)