LeetCode Longest Valid Parentheses
来源:互联网 发布:js中控制div隐藏 编辑:程序博客网 时间:2024/05/29 17:52
原题链接在这里:https://leetcode.com/problems/longest-valid-parentheses/
和Largest Rectangle in Histogram都是往栈内存index.
生成一个stack, 从头往后扫string, 遇到'(', 就把当前index存入到stack中。
当遇到 ')'时要看当前stack是后为空,若为空,更新新起点start = i+1;
若不为空,就pop出来一个index,然后再看stack是否为空:
若为空,则最大长度maxLength更新为Math.max(maxLength, i-start+1);
若不为空,则maxLength更新为Math.max(maxLength,i-stk.peek()), 因为"( ( )"返回的长度是3不是2. 这里的三个括号配对是合法的。
Time O(n), Space O(n).
AC Java:
public class Solution { public int longestValidParentheses(String s) { if(s == null || s.length() == 0){ return 0; } Stack<Integer> stk = new Stack<Integer>(); int maxLength = 0; int start = 0; for(int i = 0; i<s.length(); i++){ if(s.charAt(i) == '('){ stk.push(i); } else{ if(stk.isEmpty()){ start = i+1; }else{ int index = stk.pop(); if(stk.isEmpty()){ maxLength = Math.max(maxLength, i-start+1); }else{ maxLength = Math.max(maxLength, i-stk.peek()); } } } } return maxLength; }}
0 0
- LeetCode: Longest Valid Parentheses
- LeetCode Longest Valid Parentheses
- LeetCode: Longest Valid Parentheses
- [Leetcode] Longest Valid Parentheses
- [leetcode]longest Valid Parentheses(!!)
- [Leetcode] Longest Valid Parentheses
- leetcode Longest Valid Parentheses
- 【leetcode】Longest Valid Parentheses
- [LeetCode]Longest Valid Parentheses
- [leetcode] Longest Valid Parentheses
- LeetCode-Longest Valid Parentheses
- [LeetCode] Longest Valid Parentheses
- LeetCode:Longest Valid Parentheses
- Leetcode: Longest Valid Parentheses
- Leetcode:Longest Valid Parentheses
- leetcode Longest Valid Parentheses
- leetcode Longest Valid Parentheses
- LeetCode Longest Valid Parentheses
- Android学习——Frame动画、Shape动画
- 微信支付之认识微信支付开发
- C#方便操作数据总结
- SQL Server中的三种物理连接图文解析:Loop Join,Merge Join,Hash Join
- const在函数前与函数后的区别
- LeetCode Longest Valid Parentheses
- Java 里把 InputStream 转换成 String 的几种方法
- UVa 10074 - Take the Land
- 转载】Maven + SVN + Hudson 自动编译、部署、发布
- 写给新人数据挖掘基础知识介绍
- Android 绘图进阶:Canvas绘制联系人侧滑列表(drawText+监听者模式)
- @dynamic关键字
- svn搭建
- Node类源代码不完全分析