【Leetcode】Longest Valid Parentheses
来源:互联网 发布:接入网络 编辑:程序博客网 时间:2024/06/06 14:08
题目链接:https://leetcode.com/problems/longest-valid-parentheses/
题目:
Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (well-formed) parentheses substring.
For “(()”, the longest valid parentheses substring is “()”, which has length = 2.
Another example is “)()())”, where the longest valid parentheses substring is “()()”, which has length = 4.
思路:
这题简直太恶心了,,根据http://blog.csdn.net/yeqiuzs/article/details/51622394 很容易想到利用栈来做,所以我压根没想用dp,思路也简单,为了简单起见,用一个数组保存字符串中字符是否是有效字符,用栈判断,最后遍历一遍数组,找到最长的连续的有效字符。。。
为啥说这题ac的时间要求恶心呢,上面这种思路,c++可以ac,java就超时,我在本地测试了一下超时的例子,结果发现能ac的方法和超时的方法运行时间差别很小,只有不到10ms。。= =!
无语,怀疑是两遍遍历时间刚好超了,只好尝试一遍遍历得到结果。
这里用栈只保存左括号的下标,当遇到一个右括号若栈存在左括号,就计算一下有效字符串的长度。
算法:
public int longestValidParentheses(String s) { Stack<Integer> stack = new Stack<Integer>(); int lastInvalid = -1, max = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(') { stack.push(i); } else if (c == ')') { if (stack.isEmpty()) { lastInvalid = i; } else {//形成一组有效括号对 stack.pop(); if(stack.isEmpty()){ max = Math.max(max, i-lastInvalid); }else{//若仍有左括号等待配对 则此时它是最近左边的一个失效括号 max = Math.max(max, i-stack.peek()); } } } } return max; }
- 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
- Google Java Oracle 三角恋的前世今生
- 【Java学习-J.160601.0.20】Servlet 基础二
- 安卓开发(二)ListView显示菜单,SQLite存储和ListView显示
- Arduino 之木马模拟
- 集成JSF
- 【Leetcode】Longest Valid Parentheses
- iOS开发中,在一般的ViewController中使用static cell
- 站内信DB设计实现
- JSP的学习总结
- Android布局控件属性
- 一个32岁入门的70后程序员给我的启示
- html中插入视频音频
- 设计模式---适配器模式
- Parallels+Fedora23+Kafka