简介

最长有效括号,
使用动态规划, 然后 分成两种情况进行讨论.

code

class Solution {
public:
    int longestValidParentheses(string s) {
        int n = s.size();
        int maxans = 0;
        vector<int> dp(n, 0);
        for(int i=1; i<n; i++){
            if(s[i] == ')') {
                if(s[i-1] == '(') {
                    dp[i] = (i >= 2 ? dp[i-2] : 0) + 2;
                } else if ( i - dp[i-1] > 0 && s[i - dp[i-1] - 1] == '(') {
                    dp[i] = dp[i-1] + ((i - dp[i-1]) >= 2? dp[i - dp[i-1] - 2]:0) + 2;
                }
                maxans = max(maxans, dp[i]);
            }
        }
        return maxans;
    }
};
posted on 2021-06-12 22:46  HDU李少帅  阅读(24)  评论(0编辑  收藏  举报