美文网首页工作生活
Leetcode 22 括号生成

Leetcode 22 括号生成

作者: 禾木清清 | 来源:发表于2019-07-04 20:40 被阅读0次

    题目

    给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

    例如,给出 n = 3,生成结果为:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/generate-parentheses
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解题思路

    本题是要生成所有可能的括号对,本文要使用递归的模式生成:

    1. 用一个array存储所有的字符串
    • 终止条件:left和right都为0, 压入生成的字符串
    • left>0,向左递归(left-1, right, s+"(")
    • left<right并且right>0, 向右递归(left, right-1, s+")")
     def generateParenthesis(self, n: int) -> List[str]:
            def generate(array, left, right, s) -> str:
                if left == 0 and right == 0:
                    array.append(s)
                    return 
                if left > 0:
                    generate(array, left-1, right, s+"(")
                if left < right and right > 0:
                    generate(array, left, right-1, s+")")
            array = []
            left = n 
            right = n
            generate(array, left, right, "")
            return array
            
    

    相关文章

      网友评论

        本文标题:Leetcode 22 括号生成

        本文链接:https://www.haomeiwen.com/subject/jtddhctx.html