题解 | #最长的括号子串#

最长的括号子串

http://www.nowcoder.com/practice/45fd68024a4c4e97a8d6c45fc61dc6ad

class Solution {
public:
    /**
     * 
     * @param s string字符串 
     * @return int整型
     */
    int longestValidParentheses(string s) {
        // write code here
        vector<int> dp(s.size(), 0); // 记录最大合法字符串的长度
        int maxValue = 0;
        // 一共两种情况(())和()()合法,需要进行区分
        for(int i = 0; i < s.size(); i++) {
            // 令元素为‘(’的dp值都为0,只考虑元素为‘)’的情况
            if(s[i] == ')') {
                int prev = i - 1 - dp[i - 1]; // prev为以i-1结尾的合法字符串的开始下标
                if(prev >= 0 && s[prev] == '(') {
                    dp[i] = dp[i - 1] + 2; // 考虑(())情况
                    if(prev - 1 >= 0) // 考虑()()情况
                        dp[i] += dp[prev - 1];
                }
            }
            maxValue = max(maxValue, dp[i]);
        }
        return maxValue;
    }
};
全部评论

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
躺尸修仙中:因为很多92的也去卷中小厂,反正投递简历不要钱,面试不要钱,时间冲突就推,不冲突就面试积累经验
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务