032 Longest Valid Parentheses 最长有效括号
2024-10-20 06:44:08
给一个只包含 '(' 和 ')' 的字符串,找出最长的有效(正确关闭)括号子串的长度。
对于 "(()",最长有效括号子串为 "()" ,它的长度是 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
最新文章
- json 转化
- 一年成为Emacs高手(像神一样使用编辑器)
- 请给出一个左侧定宽右侧自适应的HTML结构及样式
- ip输入框键入.或者合法数字自动选择下一个输入框效果
- objective-c基础教程
- css Block formatting context BFC
- JavaScript 通过队列实现异步流控制
- textarea去掉右下角拖拽
- Android 开发工具类 19_NetworkStateReceiver
- Linux自动化命令工具expect
- lumion的物体系统5.30
- 无网情况下linux安装django
- 加入域的计算机重定向到指定的OU
- work单进程群发通知 后面会增加Channel组件的分组推送以及集群推送篇章
- CSS3标签显示模式
- Mysq性能分析 —— Genral log(普通日志)与 Slow log(慢速日式)
- Katalon Studio学习笔记(二)——请求响应中文乱码解决方法
- Windows平台编译memcached 1.2.6
- mysql 数据库数据迁移 The user specified as a definer (&#39;root&#39;@&#39;%&#39;) does not exist 解决方法
- Linux操作系统上ADSL拨号上网的方法详解