最长有效括号

题目链接

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;
};
相关推荐
lsylalalala2 小时前
常见的排序算法1
数据结构·算法·排序算法
想吃火锅10053 小时前
【leetcode】54. 螺旋矩阵
算法·leetcode·矩阵
想吃火锅10053 小时前
【leetcode】300. 最长递增子序列
算法·leetcode·职场和发展
imaol13 小时前
数据结构---队列
java·数据结构·算法
数模竞赛Paid answer3 小时前
2026年电工杯数学建模A题绿电直连型电氢氨园区优化运行求解全过程论文及程序
算法·数学建模·电工杯
疯狂打码的少年3 小时前
【数据结构】串的模式匹配:KMP算法(重点)
数据结构·笔记·算法
一米阳光86613 小时前
软考(中级)软件设计师核心笔记(8)数据结构——线性结构、数组、矩阵
数据结构·笔记·职场发展·软考·软件设计师·中级职称
晚风醉蝶4 小时前
第零篇-算法全景图
算法
疯狂打码的少年5 小时前
【数据结构】树的基本概念与二叉树定义
java·数据结构·笔记·算法
webmote335 小时前
用 NVIDIA Nemotron 3 Super + .NET 构建有记忆的多轮对话
后端·算法