给一个只包含 '(' 和 ')' 的字符串,找出最长的有效(正确关闭)括号子串的长度。
对于 "(()",最长有效括号子串为 "()" ,它的长度是 2。
另一个例子 ")()())",最长有效括号子串为 "()()",它的长度是 4。
详见:https://leetcode.com/problems/longest-valid-parentheses/description/

Java实现:

start变量来记录合法括号串的起始位置,遍历字符串,如果遇到左括号,则将当前下标压入栈,如果遇到右括号,如果当前栈为空,则将下一个坐标位置记录到start,如果栈不为空,则将栈顶元素取出,此时若栈为空,则更新结果和i - start + 1中的较大值,否则更新结果和i - 栈顶元素中的较大值.

class Solution {
public int longestValidParentheses(String s) {
if(s==null || s.length()==0){
return 0;
}
Stack<Integer> stack = new Stack<Integer>();
int start = 0;
int res = 0;
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='('){
stack.push(i);
}else{
if(stack.isEmpty()){
start = i+1;
}else{
stack.pop();
res = stack.isEmpty()?Math.max(res,i-start+1):Math.max(res,i-stack.peek());
}
}
}
return res;
}
}

参考:https://www.cnblogs.com/grandyang/p/4424731.html

最新文章

  1. json 转化
  2. 一年成为Emacs高手(像神一样使用编辑器)
  3. 请给出一个左侧定宽右侧自适应的HTML结构及样式
  4. ip输入框键入.或者合法数字自动选择下一个输入框效果
  5. objective-c基础教程
  6. css Block formatting context BFC
  7. JavaScript 通过队列实现异步流控制
  8. textarea去掉右下角拖拽
  9. Android 开发工具类 19_NetworkStateReceiver
  10. Linux自动化命令工具expect
  11. lumion的物体系统5.30
  12. 无网情况下linux安装django
  13. 加入域的计算机重定向到指定的OU
  14. work单进程群发通知 后面会增加Channel组件的分组推送以及集群推送篇章
  15. CSS3标签显示模式
  16. Mysq性能分析 —— Genral log(普通日志)与 Slow log(慢速日式)
  17. Katalon Studio学习笔记(二)——请求响应中文乱码解决方法
  18. Windows平台编译memcached 1.2.6
  19. mysql 数据库数据迁移 The user specified as a definer (&#39;root&#39;@&#39;%&#39;) does not exist 解决方法
  20. Linux操作系统上ADSL拨号上网的方法详解

热门文章

  1. 【转】LCS
  2. LCS(最长公共子序列问题)
  3. HDU1257(简单DP)
  4. 【转】 Pro Android学习笔记(五九):Preferences(3):EditText和Ringtone Preference
  5. Golang Channel用法简编
  6. SpringMVC 学习笔记(请求方法的返回值和参数)
  7. 115个Java面试题和答案
  8. spring 4.0 注解数据验证2
  9. SQL Server 查询分析器提供的所有快捷方式(快捷键)
  10. IOHelper(自制常用的输入输出的帮助类)