leetcode022.括号生成

111 阅读1分钟

022.括号生成

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

n = 3             res=["((()))","(()())","(())()","()(())","()()()"]
class Solution:  # DFS
    def generateParenthesis(self, n: int) -> List[str]:
        ans = []

        def generate(S='', left=0, right=0):# left与right:已经生成的左右括号的个数
            if len(S) == 2 * n:  # n对括号有2n个字符
                ans.append(S)  # S:已建造的括号字符串
                return
            if left < n:
                generate(S + '(', left + 1, right)
            if right < left:  # 只有右括号少了,才可以生成一个右括号
                generate(S + ')', left, right + 1)

        generate()
        return ans