最长匹配括号

给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。

int longestValidParentheses(string s) {
    int left=0,right=0;
    int size=s.length();
    int res1=0,res2=0;
    for(int i=0;i<size;i++){
        if(s[i]=='('){
            left++;
        }
        else if(s[i]==')'){
            right++;
        }
        
        if(right>left){
            left =0;
            right=0;
        }
        if(left==right){
             res1=max(res1,2*left);
        }
    }
    
    left=0;
    right=0;
    for(int i=size-1;i>=0;i--){
        if(s[i]==')'){
            right++;
        }
        if(s[i]=='('){
            left++;
        }
        if(left>right){
            left=0;right=0;
        }
        if(left==right){
            res2=max(res2,2*left);
        }
    }

    return max(res1,res2);
}
posted @ 2019-09-17 13:44  夜深不自知  阅读(383)  评论(0编辑  收藏  举报