lzykevin
5/3/2020 - 5:15 AM

[leetcode] 22.括号生成

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

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

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

n = 3

class Solution:
    def generateParenthesis(self, n: int):
        ans = []
        def write(s='', left_num=0, right_num=0): # 要先设定初始值
            if len(s) == 2*n:
                ans.append(s)
            else:
                if left_num < n:
                    write(s+"(",left_num+1,right_num)
                if left_num > right_num:
                    write(s+")",left_num,right_num+1)
        write()  # write要在generateParenthesis中运行才能有用
        return ans

Solution().generateParenthesis(n)