LeetCode:90.最长有效括号

目录

1.最长有效括号


1.最长有效括号

设dpi表示以i位置结尾的最长有效括号长度,假设i位置为'),可以分为以下两种情况:

  1. i - 1位置为(,那么i - 1和i位置刚好可以拼接为一个有效括号长度为2,如果i - 2位置还有括号的话,那么dpi = dpi - 2 + 2,下面用一张图来表示
  2. i - 1的位置为),如果dpi - 1 >= 0的话,表示前面还有有效括号,并且i - dpi - 1 - 1 >= 0,i - dpi - 1 - 1的位置为(,dpi = dpi - 1 + 2,如果i - dpi - 1 - 2 >= 0的话,dpi = dpi - 1 + 2 + dpi - dp\[i - 1 - 2],下面用图表示
cpp 复制代码
class Solution {
public:
    int longestValidParentheses(string s) {
        int n = s.size();
        vector<int> dp(n);
        int length = 0;
        for(int i = 1; i < n; i++)
        {
            if(s[i] == ')')
            {
                if(s[i - 1] == '(')
                {
                    dp[i] = 2;
                    if(i - 2 >= 0)
                        dp[i] = dp[i - 2] + dp[i];
                }
                else
                {
                    if(dp[i - 1] >= 0)
                    {
                        if(i - dp[i - 1] - 1 >= 0 && s[i - dp[i - 1] - 1] == '(')
                        {
                            dp[i] = dp[i - 1] + 2;
                            if(i - dp[i - 1] - 2 >= 0)
                                dp[i] = dp[i] + dp[i - dp[i - 1] - 2];
                        }
                    }
                }
            }
            length = max(length, dp[i]);
        }
        return length;
    }
};
相关推荐
漂流瓶jz41 分钟前
UVA-1612 猜名次 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·题解·排序·aoapc·算法竞赛入门经典
吞下星星的少年·-·1 小时前
Div.2 CF 1130B题(构造,贪心)
算法·贪心·构造
文丑颜不良啊1 小时前
LeetCode1481~1500题目解析
java·leetcode
文丑颜不良啊2 小时前
LeetCode1381~1400题目解析
java·leetcode
是main不是漫2 小时前
【双指针——移动零】数组划分类题目的入门基石
c++·算法
深圳市快瞳科技有限公司3 小时前
野外鸟类AI识别落地实录:输入适配、结构化输出、去重聚合与置信度分流的工程实践
算法·计算机视觉·鸟类识别·鸟类ai识别·野外鸟类观测·林业调查
专注仿真5 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法
小豆庄5 小时前
视频遮罩追踪退场后ID撞号的排查—多目标场景下的失效
opencv·算法·bug·视频·python3.11
Tisfy6 小时前
LeetCode 3882.网格图中最小异或路径:动态规划
算法·leetcode·动态规划
D e re k ZH6 小时前
P5025 [SNOI2017] 炸弹
c++·算法