[Leetcode] Longest Valid Parentheses (Java)
2013-12-29 12:02
489 查看
Given a string containing just the characters
find the length of the longest valid (well-formed) parentheses substring.
For
which has length = 2.
Another example is
is
括号匹配的问题,开始就自作聪明的想到“(”为1,“)”为-1,给一个模式串pattern[s.length()];若pattern[i-1]>=0;则pattern[i]=pattern[i-1]+1或pattern[i-1]-1;如果pattern[i]>0则需要向前找匹配,复杂度为O(n2),代码看着还很乱,觉得一定是有不对的地方。。。
看到"()"括号匹配,首先应该想到栈的嘛。。换了个思路果然代码清晰了。。
'('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.
括号匹配的问题,开始就自作聪明的想到“(”为1,“)”为-1,给一个模式串pattern[s.length()];若pattern[i-1]>=0;则pattern[i]=pattern[i-1]+1或pattern[i-1]-1;如果pattern[i]>0则需要向前找匹配,复杂度为O(n2),代码看着还很乱,觉得一定是有不对的地方。。。
看到"()"括号匹配,首先应该想到栈的嘛。。换了个思路果然代码清晰了。。
import java.util.Stack; public class LongestValidParentheses { public int longestValidParentheses(String s) { if(s.length()<1) return 0; int max = 0; int last = -1; Stack<Integer> stack = new Stack<Integer>(); for(int i=0;i<s.length();i++){ if(s.charAt(i)=='(') stack.add(i); else { if(stack.isEmpty()) last = i; else { stack.pop(); if(stack.isEmpty()) max = Math.max(max, i-last); else { max = Math.max(max, i-stack.peek()); } } } } return max; } public static void main(String[] args) { String s = "(()()"; System.out.println(new LongestValidParentheses().longestValidParentheses(s)); } }
相关文章推荐
- leetcode:Longest Valid Parentheses 【Java】
- [leetcode-32]Longest Valid Parentheses(java)
- 【LeetCode-面试算法经典-Java实现】【032-Longest Valid Parentheses(最长有效括号)】
- Longest Valid Parentheses leetcode java
- Java [leetcode 32]Longest Valid Parentheses
- LeetCode : Longest Valid Parentheses [java]
- [LeetCode][Java] Longest Valid Parentheses
- LeetCode 32 Longest Valid Parentheses (C,C++,Java,Python)
- Java for LeetCode 032 Longest Valid Parentheses
- [Java] LeetCode32 Longest Valid Parentheses
- (Java)LeetCode-32. Longest Valid Parentheses
- 【LeetCode-面试算法经典-Java实现】【032-Longest Valid Parentheses(最长有效括号)】
- LeetCode Longest Valid Parentheses
- LeetCode – Refresh – Longest Valid Parentheses
- LeetCode算法题目:Longest Valid Parentheses
- leetcode Longest Valid Parentheses O(n)解法
- [LeetCode] 32. Longest Valid Parentheses
- Longest Valid Parentheses - Leetcode
- leetcode解题方案--032--Longest Valid Parentheses
- leetcode习题解答:32. Longest Valid Parentheses