题目描述
数字 n
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的
括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
提示:
1 <= n <= 8
题目大意
给出 n
代表生成括号的对数,写出一个函数,使其能够生成所有可能的并且有效的括号组合。
解题思路
看到了一个很有意思的思路,将一个括号视为一个单位,然后在这个括号的不同位置插入第二个括号。例如:0(1)2,在这三个位置插入一个新的括号然后去重就得出了 n=2
的结果。
代码
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
if n == 1:
return list({'()'})
res = set()
for i in self.generateParenthesis(n - 1):
for j in range(len(i) + 2):
# 插入括号
res.add(i[0:j] + '()' + i[j:])
return list(res)