classSolution{public:intlongestValidParentheses(string s){int len = s.size();
vector<int>dp(len+1,0);int res =0;for(int i =1; i < len; i++){if(s[i]==')'){// ')'int tmp = i-1-dp[i-1];// 跳过前面的()括号if(tmp >=0&& s[tmp]=='('){
dp[i]= dp[i-1]+2;if(tmp-1>=0){
dp[i]+= dp[tmp-1];}}}
res =max(res, dp[i]);}return res;}};
代码(8.27 二刷看解析)
classSolution{public:intlongestValidParentheses(string s){int n = s.size();
vector<int>dp(n+1);int res =0;for(int i =1; i <= n; i++){if(s[i-1]==')'){int tmp = i - dp[i-1]-1;if(tmp >0&& s[tmp-1]=='('){
dp[i]= dp[i-1]+2;if(tmp-1>0){
dp[i]+= dp[tmp-1];}}}
res =max(res, dp[i]);}return res;}};
代码(10.6 三刷自解)
classSolution{public:intlongestValidParentheses(string s){int n = s.size();
vector<int>dp(n);int res =0;for(int i =1; i < n; i++){if(s[i]==')'){int tmp = i-1-dp[i-1];if(tmp >=0&& s[tmp]=='('){
dp[i]= dp[i-1]+2;if(tmp-1>=0)
dp[i]+= dp[tmp-1];}}
res =max(res, dp[i]);}return res;}};