class Solution { public: int longestValidParentheses(string s) { s=" "+s; vector<int>dp(s.length()+10,0); int res=0; for(int i=2;i<s.length();i++) { if(s[i-1]=='('&&s[i]==')')dp[i]=dp[i-2]+2; else if(s[i-1-dp[i-1]]=='('&&s[i]==')')dp[i]=dp[i-1]+2+dp[i-2-dp[i-1]]; res=max(res,dp[i]); } return res; } };