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 ...
随机推荐
- configure.ac文件和Makefile.am文件 编译
在编译安装openvpn 项目时遇到,其编译过程如下:生成 configure 可执行文件 make && make install ; . aclocal . autoconf . ...
- 201271050130-滕江南《面向对象程序设计(java)》第十一周学习总结
项目 内容 <面向对象程序设计(java)> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/ ...
- BASIC合集
握手包 给你握手包,flag是Flag_is_here这个AP的密码,自己看着办吧. 提交格式:flag{WIFI密码} 破解wifi密码 丢到kali,用aircrack-ng kali有一个包含常 ...
- 【转】springboot结合swagger生成接口文档
前后台分离的开发渐渐已成趋势.那么前后端的沟通就成了问题,包括移动端,web端.如果有一个东西在我们写完代码的时候,自动将接口的所有注释,调用文档提供出来,是不是一件很美好的事情.那就是使用swagg ...
- jQuery核心(一)
API文档:http://jquery.cuishifeng.cn/ 一. jQuery.extend(object) 用于扩展jQuery对象本身.用来在jQuery命名空间上增加新函数. jQue ...
- maven 常见命令
mvn clean package依次执行了clean.resources.compile.testResources.testCompile.test.jar(打包)等7个阶段.mvn clean ...
- SDOI2019退役记
\(update:2019-8-15\) 这个坑占了四个月,不填上终归不太好,也不甘心.日子久了,记不太清了,您就当瞧个乐吧. \(Day \ 0\) 下午来到山师大领准考证,晚上一点前就睡了觉. \ ...
- checkbox如何判断是否选中
checkbox在项目中使用的比较多,好多时候需要判断,或者作为某些逻辑的依据. 总结一下,拿到checkbox状态的方法. <label for="checkbox"> ...
- linux 文件详细信息
权限列: 权限列中一共 10 个字符,第一个字符代表文件类型,后边9 个字符 3 个为一组表示不同用户的权限: 第一字符表示文件类型: [d]:目录 [-]:普通文件 [l]:连接档 [b]:设备文件 ...
- 四、Srping之Bean的初始化和销毁
Srping之Bean的初始化和销毁方法 通常,bean的初始化和销毁方法我们有三个地方可以入手,分别是: 自定义初始化,销毁方法 实现spring提供的InitializingBean(初始化逻辑) ...