删除最外层的括号
删除 括号
2023-09-14 09:08:54 时间
有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括号字符串。
如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。
给出一个非空有效字符串 S,考虑将其进行原语化分解,使得:S = P_1 + P_2 + ... + P_k,其中 P_i 是有效括号字符串原语。
对 S 进行原语化分解,删除分解中每个原语字符串的最外层括号,返回 S 。
示例 1:
输入:"(()())(())"
输出:"()()()"
解释:
输入字符串为 "(()())(())",原语化分解得到 "(()())" + "(())",
删除每个部分中的最外层括号后得到 "()()" + "()" = "()()()"。
示例 2:
输入:"(()())(())(()(()))"
输出:"()()()()(())"
解释:
输入字符串为 "(()())(())(()(()))",原语化分解得到 "(()())" + "(())" + "(()(()))",
删除每个部分中的最外层括号后得到 "()()" + "()" + "()(())" = "()()()()(())"。
示例 3:
输入:"()()"
输出:""
解释:
输入字符串为 "()()",原语化分解得到 "()" + "()",
删除每个部分中的最外层括号后得到 "" + "" = ""。
代码:
string removeOuterParentheses(string S) {
int L=1;int R=0;
string ans;
for(int i=1;i<S.size();i++){
if(S[i]=='(')L++;
else R++;
if(R!=L)ans.push_back(S[i]);
else {
i++;L=1;R=0;
}
}
return ans;
}
相关文章
- 【shell 脚本】删除/var/log 下的日志
- 删除表中多余的重复记录(多个字段),只留有rowid最小的记录
- 《ASP.NET1200例》ListView控件之修改,删除与添加
- 如何删除或重置spfile中的参数
- Java实现 LeetCode 301 删除无效的括号
- 画删除线的方法,如何找替代方法,Deprecated注释
- 【链表】leetcode 19. 删除链表的倒数第 N 个结点【中等】
- shell备份,重命名,删除目录下面的文件
- Eclipse启动项目时,删除workspaces无用的工作区间
- LeetCode(80):删除排序数组中的重复项 II
- Leetcode1021. 删除最外层的括号(simple)
- Hadoop hdfs创建及删除目录代码示例
- [MongoDB] Mongo 表字段添加索引, 查看索引, 删除索引
- github 创建网络仓库 ,使用git工具将本地文件上传/删除 --- 心得
- 数据结构之红黑树(三)——删除操作
- k8s强制删除pod以及namespace
- Django(21)-ORM删除操作及实例演示
- Firefox, 插件,删除网页任意元素,
- IDEA 删除项目