题
面试题 08.09. 括号
括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。
说明:解集不能包含重复的子集。
例如,给出 n = 3,生成结果为:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
解题思路
思路是:一次递归值确定一个位置,遇到可以多选择地方 求其和
代码
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
return self.doIt(n, n, '')
def doIt(self, open_need: int, close_need: int, data: str) -> List[str]:
if open_need==close_need==0:
return [data]
if open_need==close_need:
return self.doIt(open_need-1,close_need,data+'(')
# 其他情况求全部
ans=[]
if open_need>0:
ans+=self.doIt(open_need-1,close_need,data+'(')
if open_need<close_need:
ans+=self.doIt(open_need,close_need-1,data+')')
return ans
该博客介绍了一种算法,用于生成n对括号的所有合法的开闭对应组合,例如当n=3时,输出包括'((()))', '(()())', '(())()', '()(())', '()()()'等。解题思路主要通过递归实现,在每个递归步骤中决定是在当前位置添加'('还是')',并根据开放和关闭括号的需求调整递归路径。
754

被折叠的 条评论
为什么被折叠?



