#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return int整型
*/
int longestValidParentheses(string s) {
// write code here
if(s.empty()||s.size()==1) return 0;
int n = s.size();
int res = 0;
vector<int > dp(n+1,0);
for(int i=1;i<n;i++){
if(s[i]==')'){
if(s[i-1]=='('){
dp[i+1] = dp[i-1]+2;
}else if(s[i-1]==')'){
if(s[i-dp[i]-1]=='('){
dp[i+1] = dp[i]+dp[i-dp[i]-1]+2;
}
}
res = dp[i+1]>res? dp[i+1]:res;
}
}
for(const auto & d1:dp) cout<<d1<<endl;
return res;
}
};