LeetCode--Generate Parentheses(括号组合排列)Python

来源:互联网 发布:linux公社资源共享ftp 编辑:程序博客网 时间:2024/05/22 13:05

题目:

给定n组括号,要求给出所有正确的括号组合。如当n是3时,返回内容如下:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

解题思路:

考虑用递归解决,将大问题化解为小问题,只考虑当前的情况,若左括号数大于右括号数,则当前可以增加左括号或者右括号。若左括号数等于右括号数,则当前只可以增加左括号。若左括号数等于n,则当前只可以增加右括号。

代码如下(python):

class Solution(object):    def generateParenthesis(self, n):        """        :type n: int        :rtype: List[str]        """        self.res = []        self.Iteration('',n,n)        return self.res        def Iteration(self,mstr,l,r):        if l==0 and r==0:            self.res.append(mstr)        if l<r and l!=0:            self.Iteration(mstr+'(',l-1,r)            self.Iteration(mstr+')',l,r-1)        if l<r and l==0:            self.Iteration(mstr+')',l,r-1)                    if l==r and l!=0:            self.Iteration(mstr+'(',l-1,r)