最长有效括号

题目链接

32. 最长有效括号 - 力扣(LeetCode)

思路:

  1. 了解题目所需要的 有效的括号子串,并且像这种 ()() 连续的也要算

  2. 那么我们需要知道 有效的括号子串无非就俩种,一种是 成对出现 () 要么是包围成为一个嵌套的一个子串 (()) 这样的

  3. 因此我们知道,当 si 出现 ) 时,就是我们需要去计算到最长有效字段的值,我们使用 dp i 表示 s0 到 si-1 这个串 所出现的最大值

  4. 那么 在出现 成对的 () 这种情况时,我们需要判断 si-1 是否 为 ( ,并且 i-1 不能数组越界

5.在出现 非成对 (()) 这种情况时,我们需要看对应的 i - dpi-1 的 值是什么,我们可以沿用,这个值 因为 dpi-1 表示的是 不包含当前 字符,前面的字符所出现的最大长度, i - dpi-1 就是找到最早的那个 下标是多少,并且需要满足是 ( 的情况

代码:

javascript 复制代码
/**
 * @param {string} s
 * @return {number}
 */
var longestValidParentheses = function (s) {
    let res = 0;
    let dp = new Array(s.length + 10).fill(0)
    for (let i = 1; i < s.length; 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
            }
            res = Math.max(res, dp[i])
        }
    }

    return res;
};
相关推荐
机 _ 长8 分钟前
05 智算运维|8 张卡怎么才算「捆成一张」:NCCL 实测与拓扑
运维·人工智能·算法·智算运维
早起CaiCai1 小时前
【2023-01 OM】利用深度学习算法融合异质观测实现海洋场降尺度
人工智能·深度学习·算法
梦里寻码2 小时前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法
猿人谷2 小时前
Surrogate Model:让进化算法学会“预测”,为什么它正在成为智能优化的重要技术?
后端·算法·架构
青少儿编程课堂3 小时前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛
白杨尚青4 小时前
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
开发语言·数据结构·c++·stl·红黑树·平衡二叉树
在猴站学算法4 小时前
(《统计学习方法》(第2版) 李航)第2章 感知机算法
学习·算法·机器学习·统计学习
Rainmicro4 小时前
【无标题】
java·数据库·算法
NEFU_Jyj14 小时前
牛客周赛R168
算法