首页 > 其他 > 详细

Generate Parentheses

时间:2016-08-12 14:50:05      阅读:166      评论:0      收藏:0      [点我收藏+]

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

For example, given n = 3, a solution set is:

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

这题的核心在于如何约束保证最后的结果符合well-formed要求。本质而言如果我们用一个栈模拟,则每次添加一个‘(’,则入栈一个‘)’。栈空则无法加‘)’。否则可以加‘)’。也就是每一步都必须要保证‘(’的数目大于等于‘)’。最后‘(’和‘)’的数目都等于n。用l,r分别表示还需要添加的‘(’和‘)’的数目。代码如下:

class Solution(object):
    def generateParenthesis(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        if not n:
            return []
        cnt = 0 #the number of unadded )
        arr = [),(]
        res = []
        self.generate([], n, n, res)
        return res
    def generate(self, cur, l, r, res):
        if l > r:  #非常关键
            return 
        if l == 0 and r == 0:
            res.append(‘‘.join(cur))
            return 
        if l > 0:
            cur.append(()
            self.generate(cur, l-1, r, res)
            cur.pop()
        if r > 0:
            cur.append())
            self.generate(cur, l, r-1, res)
            cur.pop()

 

Generate Parentheses

原文:http://www.cnblogs.com/sherylwang/p/5764756.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!