给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
思路1:找出所有可能的组合,再判断是否有效。
思路2:递归
执行用时 : 52 ms, 在Generate Parentheses的Python3提交中击败了91.39% 的用户
内存消耗 : 13.4 MB, 在Generate Parentheses的Python3提交中击败了50.47% 的用户
class Solution(object):
def generateParenthesis(self, n):
if n == 1:
return ['()']
last_list = self.generateParenthesis(n-1)
#print(last_list)
res = []
for t in last_list:
curr = t + ')'
for index in range(len(curr)):
if curr[index] == ')':#在每个')'的前面插入'('
res.append(curr[:index] + '(' + curr[index:])
#print(res)
return list(set(res))
s = Solution()
res = s.generateParenthesis(3)
print(res)