Longest Valid Parentheses

来源:互联网 发布:抢红包算法 编辑:程序博客网 时间:2024/06/04 20:04

DP:

从后向前遍历,若当前i是'(',则判断j=num[i]+1+i是否是')',若是则num[i]=num[i+1]+num[j+1]+2,若不是则不改变num[i]的值,仍是0,不能用num[i]=num[i+1]。

class Solution {public:    int longestValidParentheses(string s) {        int n=s.size();        if (!n) return 0;        vector<int> num(n+1,0);        int res=0;        for (int i=n-2; i>=0; i--) {            if (s[i]=='(') {                int j=i+num[i+1]+1;                if (j<n && s[j]==')') {                    num[i] = num[i+1] +2 + num[j+1];                    res = res>num[i]?res:num[i];                }            }        }        return res;    }};


0 0