2020-04-21 No.22 括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

输入:n = 3
输出:[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

题解:生成括号有两步,左括号少于n时加左括号,右括号少于左括号时加右括号

class Solution:
    def genPar(self, res, midStr, open, close, n):
        if len(midStr) == 2*n:
            res.append(midStr)
            return
        if open < n:
            self.genPar(res, midStr+'(', open+1, close, n)
        if close < open:
            self.genPar(res, midStr+')', open, close+1, n)

    def generateParenthesis(self, n: int) -> List[str]:
        res = []
        self.genPar(res, '', 0, 0, n)
        return res 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容