Level:

  Medium

题目描述:

Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring.

Example 1:

Input: "(()"
Output: 2
Explanation: The longest valid parentheses substring is "()"

Example 2:

Input: ")()())"
Output: 4
Explanation: The longest valid parentheses substring is "()()"

思路分析:

  设置一个栈,遍历字符串,如果遇到‘(’,将它对应的下标存放进栈,遇到‘)’,其下标为i,弹出栈顶元素,计算 i-stack.pop()更新res,直到遍历结束,得到最大的res。

代码:

public class Solution{
public int longestValidParentheses(String s){
Stack<Integer>stack=new Stack<>();
int left=-1;
int res=0;
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='(')
stack.push(i);
else{
if(stack.isEmpty())
left=i; //一开始出现‘)’
else{
stack.pop();
if(stack.isEmpty())
res=Math.max(res,i-left);
else
res=Math.max(res,i-stack.peek());
}
}
}
return res;
}
}

最新文章

  1. C#在二维码中添加圆角logo
  2. ecshop 变量表
  3. ubuntu 下mongodb安装
  4. 福建红色文化VR/AR实体体验馆正式启用
  5. WebApi:使用方法名或者控制器名作为接口地址
  6. Angularjs中对时间格式:/Date(1448864369815)/ 的处理
  7. Android性能分析工具介绍
  8. POJ3630——简单Trie树
  9. set(二叉搜索树)
  10. JQuery常用API 核心 效果 JQueryHTML 遍历 Event事件
  11. Emmet插件详解
  12. Object.prototype.toString.call(obj)使用方法以及原理
  13. SQL行转列与列转行(转)
  14. dubbo 用来做什么
  15. [Windows端口占用] 找到占用端口的进程并杀死
  16. 十六、Mediator 仲载者设计模式
  17. GitHub--创建新的分支(转)
  18. Docker 执行nginx以及简单进入container
  19. QT中QLineEdit的editingFinished()信号在按下回车时会触发两次的解决办法
  20. Authentication required (packagist.phpcomposer.com) 账号密码到哪里获取?

热门文章

  1. vue.js(7)--vue中的样式绑定
  2. 浏览器如何减少 reflow/repaint
  3. Linux下svn回滚
  4. 使用transporter同步MongoDB数据到es
  5. 164-基于TI DSP TMS320C6455和Altera FPGA EP2S130的Full CameraLink PDS150接口板卡
  6. Mysql --09 Innodb核心特性——事务
  7. BZOJ2280 [Poi2011]Plot 二分+倍增+最小圆覆盖
  8. Hadoop的基础命令
  9. 【Linux】运维常用命令
  10. java使用开源类库Tesseract实现图片识别