文章目录:
- 题目
- 脚本一
- 脚本一逻辑
- shell脚本分享
题目:
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
脚本一:【用时:36ms】
class Solution: def generateParenthesis(self, n: int) -> List[str]: lists = [] if n >0 and not lists :lists.append("(") while lists: zuo = lists[0].count("(") you = lists[0].count(")") if zuo > you: if zuo == n: lists.append(lists[0]+")") lists.pop(0) else: lists.append(lists[0] + ")") lists.append(lists[0] + "(") lists.pop(0) else: if zuo == n: return(lists) else: lists.append(lists[0] + "(") lists.pop(0)
脚本一逻辑:
- 括号生成的处理思路是:
- 第一:无论从那个位置从左往右算起,左括号的数量一定要大于或等于右括号,如(()和(())
- 第二:在左括号的数量小于目标数n时,则可以在此元素的基础上加上一个左括号(和在此元素上添加右括号")"组成新的两个元素,然后再把旧元素删除
- 第三:在左括号的数量等于目标数n时,则只能在此元素的基础上加上一个右括号")",然后再把旧元素删除
- 第四:在第三的基础上,如果左括号的数量等于右括号的数量,则可以停止循环,并返回结果了
shell解题分享:
https://blog.csdn.net/weixin_43428906/article/details/102790053
此链接是笔者较早时间使用shell解决此题的文章,分享给有兴趣的朋友