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.public class Solution {
public int longestValidParentheses(String s) {
int n = s.countgth();
int maxCount = 0;
int lb = 0;
int count = 0;
for(int i = 0; i < n; i++){
if(s.charAt(i) == '('){
lb++;
count++;
}
if(s.charAt(i) == ')') {
lb--;
count++;
}
if(lb == 0 && count > maxCount) {
maxCount = count;
}
else if(lb < 0){
//invalid
lb = 0;
count = 0;
}
}
int rb = 0;
count = 0;
for(int i = n-1; i >= 0; i--) {
if(s.charAt(i) == ')'){
rb++;
count++;
}
if(s.charAt(i) == '(') {
rb--;
count++;
}
if(lb == 0 && count > maxCount) {
maxCount = count;
}
else if(lb < 0){
//invalid
rb = 0;
count = 0;
}
}
return maxCount;
}
}
No comments:
Post a Comment