题目:22. 括号生成
链接:https://leetcode-cn.com/problems/generate-parentheses
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例: 输入:n = 3 输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
解题:
1、暴力解法,尝试在每个地方添加括号。
代码:
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
if n == 0:
return []
res = ["()"]
if n == 1:
return res
count = 1
while count < n:
tmp = set([])
for ri in res:
for j, rij in enumerate(ri):
tmp.add(ri[:j + 1] + '()' + ri[j + 1:])
res = list(tmp)
count += 1
return res