LeetCode题解(python)
22. 括号生成
题目描述
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
解题心得
本题有一定难度,基本都要用递归来完成
分别数左右括号的个数,计算左右括号插入的次数,本题参考评论区python代码。
解题代码
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
rel = []
def par(rel,left,right,temp):
if left<0 or right<0:
return
if right<left:
return
if left==0 and right == 0:
rel.append(temp)
return
else:
par(rel,left-1,right,temp+'(')
par(rel,left,right-1,temp+')')
par(rel,n,n,'')
return rel