[LeetCode 热题 100] 32. 最长有效括号

LeetCode 热题 100 32. 最长有效括号

背景

给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号 子串 的长度。

左右括号匹配,即每个左括号都有对应的右括号将其闭合的字符串是格式正确的,比如 "(()())"。

示例 1:

输入:s = "(()"

输出:2

解释:最长有效括号子串是 "()"

示例 2:

输入:s = ")()())"

输出:4

解释:最长有效括号子串是 "()()"

示例 3:

输入:s = ""

输出:0

提示:

0 <= s.length <= 3 * 10^4

si 为 '(' 或 ')'

解题思路

这题用的是堆栈的思路。

先放一个-1在栈里,是防止空栈。

遇到(就直接入栈,

如果是),先弹出一个元素。此时检查栈,

如果空了,显然是)数量大于(数量导致无法形成有效括号了,后面也不可能再利用前面的括号数量,所以直接在这里做一个隔断,把这里的下标入栈。

如果不空的话,比较现存最大长度和(目前下标-栈顶元素)-> 目前长度的最大值

代码

python 复制代码
class Solution:
    def longestValidParentheses(self, s: str) -> int:
        stack = [-1]
        max_length = 0
        cur_length = 0
        for i in range(len(s)):
            if s[i] == "(":
                stack.append(i)
            else:
                stack.pop()
                if stack == []:
                    stack.append(i)
                else:
                    max_length = max(max_length, i-stack[-1])   
        return max_length

小tips

这题官方归在了动态规划里面,但实际好像并不那么动态规划,用官方解的动态规划还会超时。

相关推荐
FPGA信号处理6 分钟前
【 凸优化】第六讲:求解器与支持向量机
算法·机器学习·支持向量机
专注仿真8 分钟前
支持向量机(SVM)算法详解与代码实例
算法·机器学习·支持向量机
Pniubi12 分钟前
力扣42接雨水(动态规划法)
算法·leetcode·职场和发展
应用市场13 分钟前
用本机跑的开源音乐模型,给安卓小游戏做 20 秒无缝循环背景音乐
android·python·游戏开发·soundpool·音频处理
小lo想吃棒棒糖13 分钟前
把 启元机器人Q1 的训练搬到昇腾 910B:从 MuJoCo 到 PPO 的一次完整迁移
人工智能·python·机器人·昇腾·具身智能
weixin_3077791321 分钟前
RAG 级联失效分析——面试中的错误归因艺术
人工智能·python·面试·职场和发展
AI创界者23 分钟前
Python 进阶实战(十八):API 网关安全与异步鉴权中间件 —— 基于 AsyncIO 的 JWT 零拷贝验权与动态黑名单过滤
人工智能·python·aigc
CQU_JIAKE27 分钟前
10.31[A]
算法·深度优先
zwc321043205531 分钟前
Day 5:threshold与inRange阈值分割
c++·图像处理·人工智能·opencv·算法·计算机视觉
前端精髓33 分钟前
学会调用Qwen3.7-通用文本向量
python