方法一、一维DP
1 class Solution 2 { 3 public: 4 int longestValidParentheses(string s) 5 { 6 vector<int> dp(s.size(),0); 7 int res=0; 8 for(int i=s.size()-2;i>=0;i--) 9 { 10 if(s[i]==')') 11 dp[i]=0; 12 else 13 { 14 int j=i+dp[i+1]+1; 15 if(j<s.size()&&s[j]==')') 16 { 17 dp[i]+=dp[i+1]+2; 18 if(j+1<s.size()) 19 dp[i]+=dp[j+1]; 20 } 21 } 22 res=max(res,dp[i]); 23 } 24 return res; 25 } 26 };