最长有效(格式正确且连续)括号子串的长度
动态规划:
class Solution{
public:
int longeatValidParentheses(string s){
int n=s.size();
vector<int> dp(n,0);
int maxVal=0;
for(int i=1;i<n;i++){
if(s[i]==')'){
if(s[i-1]=='('){
dp[i]=2;
if(i-2>=0){
dp[i]=dp[i-2]+dp[i];
}
}else if(dp[i-1]>0){
if((i-dp[i-1]-1>=0&&s[i-dp[i-1]-1]=='(')){
dp[i]=dp[i-1]+2;
if((i-dp[i-1]-2)>=0){
dp[i]+=dp[i-dp[i-1]-2];
}
}
}
}
maxVal=max(maxVal,dp[i]);
}
return maxVal;
}
};