Leetcode 22.括号生成

22.括号生成

题目

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

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

1
2
3
4
5
6
7
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
if n < 1:
return []
res = []
self.backtracking(n, res, "", 0, 0)
return res
def backtracking(self,n, res, temp, left, right):
if left < n:
self.backtracking(n, res, temp + '(' , left+1, right)
if right < left:
self.backtracking(n ,res, temp + ')', left, right+1)
if right == n:
res.append(temp)