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.Solution:
public class Solution {
public int longestValidParentheses(String s) {
ArrayDeque<Integer> positions = new ArrayDeque<Integer>();
int lastError = -1;
int longestChain = 0;
for(int i=0; i<s.length(); i++)
{
if(s.charAt(i)=='(')
positions.push(i);
else
{
if(positions.isEmpty())
lastError = i;
else
{
positions.pop();
int previousValue = positions.isEmpty() ? lastError : positions.peek();
longestChain = longestChain < i-previousValue ? i-previousValue : longestChain;
}
}
}
return longestChain;
}
}
No comments :
Post a Comment