• Generate Parentheses


    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()
  • 相关阅读:
    document cookie用法
    禁用表单元素 && 禁止选中
    tool
    居中对齐
    插件
    浮动应用
    兼容低版本 ie 的思路
    Linux无权限上传文件解决办法
    linux系统常用运维命令
    linux系统快捷键
  • 原文地址:https://www.cnblogs.com/sherylwang/p/5764756.html
Copyright © 2020-2023  润新知