Java for LeetCode 032 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.
解题思路:
本题方法多多,是Java for LeetCode 020 Valid Parentheses题目的延续,因此,我们继续用栈的思路解决这个问题,其中需要一个index来维护最后一个')'出现的位置。JAVA代码如下:
static public int longestValidParentheses(String s) { int maxLength = 0,index=-1; Stack<Integer> stack = new Stack<Integer>(); for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == '(') stack.push(i); else { if(stack.empty()) index=i; else{ stack.pop(); if(stack.isEmpty()) maxLength = Math.max(maxLength, i - index); else maxLength=Math.max(maxLength, i - stack.peek()); } } } return maxLength; }