#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;

    }
};