题目描述
思路分析
做法很多,可以dp,思维+栈模拟或者直接正反来两次左右括号数匹配。
代码实现
class Solution {
public:
int longestValidParentheses(string s) {
int n=s.length();
int l=0,r=0,sum=0,ans=0;
for(r=0;r<n;r++){
if(s[r]=='(') sum++;
else sum--;
if(sum<0){
l=r+1;;
sum=0;
}
else if(sum==0){
ans=max(ans,r-l+1);
}
}
r=n-1,sum=0;
for(l=n-1;l>=0;l--){
if(s[l]==')') sum++;
else sum--;
if(sum<0){
r=l-1;
sum=0;
}
else if(sum==0){
ans=max(ans,r-l+1);
}
}
return ans;
}
};