花狗

导航

 
int longestValidParentheses(string s) {
    int l = 0, r = 0, ans = 0;
    for (int i = 0; i < s.length(); i++) {
        if (s[i] == '(')l++;
        else r++;
        if (r > l)l = r = 0;
        else if (r == l)ans = max(ans, 2 * r);
    }
    l = r = 0;
    for (int i = s.length() - 1; i >= 0; i--) {
        if (s[i] == ')')l++;
        else r++;
        if (r > l)l = r = 0;
        else if (r == l)ans = max(ans, 2 * r);
    }
    return ans;
}

int main()
{
    int n;
    int b;
    cin >> n;
    cin    >> b;
    string s;
    cin >> s;

    //string s = "))(((())()()()())(";

    cout << (b - longestValidParentheses(s)) / 2;

}

题解::先找到最长括号对,然后剩下的除以二

posted on 2021-09-03 22:29  花狗  阅读(37)  评论(0)    收藏  举报