1021--RemoveOutermostParentheses
public class RemoveOutermostParentheses {
/*
解法一:栈,( 进栈,) 出栈,栈为空时,则找到原语,然后去括号。
*/
public String removeOuterParentheses(String S) {
StringBuilder sb=new StringBuilder();
Stack<Character> stack=new Stack<>();
int start=0; int end=0;
for (int i=0;i<S.length();i++){
char c=S.charAt(i);
if (c=='('){
stack.push(c);
}
if (c==')'){
stack.pop();
if (stack.isEmpty()){
end=i;
sb.append(S.substring(start+1,end));
start=end+1;
}
}
}
return sb.toString();
}
/*
解法二:数字标记代替栈,从上面的代码中,我发现,栈起的作用并不是需要特定的括号,而只是判断是否为空来找原语。
而进栈出栈又消耗时间,所以可以用一个整数来代替栈。
*/
public String removeOuterParentheses2(String S) {
StringBuilder sb=new StringBuilder();
int flag=0;
int start=0; int end=0;
for (int i=0;i<S.length();i++){
char c=S.charAt(i);
if (c=='('){
flag++;
}
if (c==')'){
flag--;
if (flag==0){
end=i;
sb.append(S.substring(start+1,end));
start=end+1;
}
}
}
return sb.toString();
}
/*
解法三:解法二优化:分析发现,并不需要用end来标记末尾,直接用i就可以了,快了1ms;
*/
public String removeOuterParentheses3(String S) {
StringBuilder sb=new StringBuilder();
int start=0;
int flag=0;
for (int i=0;i<S.length();i++){
char c=S.charAt(i);
if (c=='('){
flag++;
}
if (c==')'){
flag--;
if (flag==0){
sb.append(S.substring(start+1,i));
start=i+1;
}
}
}
return sb.toString();
}
/*
解法四:最优解:判断的原理是和上面的一样的,但是上面的代码都是找到一个原语后,在原字符串上进行切割,比较费时间。
下面是挨个字符判断,如果满足条件,则直接添加。
*/
public String removeOuterParentheses4(String S) {
StringBuilder sb=new StringBuilder();
int currentDepth=0;
for (char c:S.toCharArray()){
if (c=='('&&(currentDepth +=1)>1) sb.append(c);
else if (c==')'&&(currentDepth -=1)>=1) sb.append(c);
}
return sb.toString();
}
}
1021--RemoveOutermostParentheses的更多相关文章
- LeetCode 1021. 删除最外层的括号(Remove Outermost Parentheses)
1021. 删除最外层的括号 1021. Remove Outermost Parentheses 题目描述 有效括号字符串为空 ("")."(" + A + ...
- Code[VS]1021 玛丽卡题解
Code[VS]1021 玛丽卡题解 SPFA Algorithm 题目传送门:http://codevs.cn/problem/1021/ 题目描述 Description 麦克找了个新女朋友,玛丽 ...
- Codevs 1021 玛丽卡
Codevs 1021 玛丽卡 题目地址:http://codevs.cn/problem/1021/ 题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他 ...
- OJ-上海交大-1021. 从前有座山
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- 1021: A除以B
1021: A除以B 时间限制: 1 Sec 内存限制: 128 MB提交: 263 解决: 189[提交][状态][讨论版] 题目描述 本题要求计算A/B,其中A是不超过1000位的正整数,B是 ...
- PAT乙级 1021. 个位数统计 (15)
1021. 个位数统计 (15) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一个k位整数N = dk-1 ...
- 51nod 1021 石子归并(dp)
51nod 1021 石子归并 题解:从i到j合并的最小值:dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + sum[j] - sum[i-1]); 最 ...
- 【BZOJ】【1021】【SHOI2008】Dept循环的债务
DP 去膜拜题解了>_>玛雅原来是动规…… 让我先理解一下为什么要用动规:这个题根据钱数推方案其实是无从下手的……(线性规划?……事实证明我想多了) 啦-我们先来看个超级简化版的问题:怎么 ...
- 51nod 1021 石头归并
1021 石子归并 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合 ...
- PAT 1021
1021. Deepest Root (25) A graph which is connected and acyclic can be considered a tree. The height ...
随机推荐
- MySQL 部署分布式架构 MyCAT (二)
安装 MyCAT 安装 java 环境(db1) yum install -y java 下载 Mycat-server-1.6.5-release-20180122220033-linux.tar. ...
- liteos MMU(十八)
1. 概述 1.1 基本概念 MMU全称"Memory Management Unit",顾名思义就是"内存管理单元". 1.2 运作机制 建立页表描述符号表, ...
- emacs 设置emacs的外观
设置emacs的外观 emacs的外观包括文本区的外观,辅助区的外观,状态行的外观,光标的外观等, 每个外观都有名字,并且都有下面属性: Font Family: 字体名字 Font Foundry: ...
- ue4 FString 中文乱码问题
使用FString出现乱码,最简单的情况,FString Str = "你好"; 这时候就会出现乱码,解决方法是改成这样 FString Str = TEXT("你好&q ...
- 【CF981F】Round Marriage(二分答案,hall定理)
传送门 题意: 给出一个长度为\(L\)的环,标号从\(0\)到\(L-1\). 之后给出\(n\)个新郎,\(n\)个新娘离起点的距离. 现在新郎.新娘要一一配对,但显然每一对新人的产生都会走一定的 ...
- vue高频面试题(面试路上踩过的坑)
### Vue 双向绑定原理 mvvm 双向绑定,采用**数据劫持结合发布者-订阅者模式**的方式,通过 `Object.defineProperty()` 来劫持各个属性的 setter.gette ...
- arduino (3) 控制sim900A发送短信
狗屎佳世通旗舰店,卖的什么破玩意sim900a芯片,不支持联通卡,还生明模块支持双卡的 之前买的esp8266-07都是内存偷工减料 买的液体浊度传感器给的原理图也不给基本接线. 差评垃圾店,你敢卖就 ...
- 为什么用时序电路实现CPU
时序电路 我们带着如下疑问来看时序电路: 1.为什么CPU要用时序电路,时序电路与普通逻辑电路有什么区别. 2.触发器.锁存器以及时钟脉冲对时序电路的作用是什么,它们是如何工作的. 带着这两个问题,我 ...
- 补充: canal
1. 作用: 同步mysql:做拉链表:更新redis 某些情况无法从日志中获取信息,而又无法利用sqoop等ETL工具对数据实时的监控 2. canal的工作原理: ...
- Note | 论文写作笔记
目录 1. 规范 2. 语法 3. 其他 4. 好图好表 5. 好表达 我们的工作很重要 我们的工作有意义 我们的工作细节 我们怎么组织这篇文章 最终效果出类拔萃 怎么解释我们的成功 写完逐条核对吧. ...