当前位置: 首页 > news >正文

LeetCode hot 100—最长有效括号

题目

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

示例

示例 1:

输入:s = "(()"
输出:2
解释:最长有效括号子串是 "()"

示例 2:

输入:s = ")()())"
输出:4
解释:最长有效括号子串是 "()()"

示例 3:

输入:s = ""
输出:0

分析

可以使用动态规划的方法来解决这个问题。我们定义一个数组 dp,其中 dp[i] 表示以 s[i] 结尾的最长有效括号子串的长度。

动态规划

代码解释

初始化n 为字符串 s 的长度。dp 数组初始化为 0,长度为 nmaxLength 用于记录最长有效括号子串的长度,初始化为 0。

动态规划过程

  • 遍历字符串 s,从第二个字符开始(因为第一个字符不可能组成有效括号子串)。
  • 如果当前字符是 )
    • 情况一:如果前一个字符是 (,则可以与前一个字符组成一对有效括号。此时 dp[i] 等于 dp[i - 2](如果 i >= 2)加上 2。
    • 情况二:如果前一个字符也是 ),则需要检查更前面的字符是否能组成有效括号。如果 i - dp[i - 1] > 0 且 s[i - dp[i - 1] - 1] == '(',则 dp[i] 等于 dp[i - 1] 加上 dp[i - dp[i - 1] - 2](如果 i - dp[i - 1] >= 2)再加上 2。
  • 更新 maxLength 为 dp[i] 和 maxLength 中的较大值。

返回结果

  • 最后返回 maxLength,即最长有效括号子串的长度。

时间复杂度:O(n),n 是字符串的长度

空间复杂度:O(n)

class Solution {
public:int longestValidParentheses(string s) {int n = s.length();if (n == 0) return 0;// dp[i] 表示以 s[i] 结尾的最长有效括号子串的长度vector<int> dp(n, 0);int maxLength = 0;for (int i = 1; i < n; ++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;}maxLength = max(maxLength, dp[i]);}}return maxLength;}
};

相关文章:

  • HTML应用指南:利用GET请求获取微博签到位置信息
  • 中介者模式:解耦对象间复杂交互的设计模式
  • 虚拟机详解
  • 音视频之H.265/HEVC环路后处理
  • 修改了Element UI中组件的样式,打包后样式丢失
  • 2194出差-节点开销Bellman-ford/图论
  • Spring AI 核心概念
  • Atlas 800I A2 离线部署 DeepSeek-R1-Distill-Llama-70B
  • 使用钉钉机器人推送系统内部的ERP停机维护公告
  • Mysql的深度分页查询优化
  • 鲲鹏麒麟搭建Docker仓库
  • DeepSeek 部署中的常见问题及解决方案全解析
  • DrissionPage 请求一次换一个代理(不重启chrome)
  • 快速上手GO的net/http包,个人学习笔记
  • CentOS 7 磁盘阵列搭建与管理全攻略
  • 【计算机视觉】CV实战项目- 深度解析FaceAI:一款全能的人脸检测与图像处理工具库
  • 基于霍尔效应传感器的 BLDC 电机梯形控制方案详解
  • 从零开始学习SLAM|技术路线
  • uniapp+vue3移动端实现输入验证码
  • 数据中台-数据质量管理系统:从架构到实战
  • 获公示拟任省辖市委副书记的胡军,已赴南阳履新
  • 5月1日起,涉外婚姻登记将在上海市16区全面铺开
  • 时隔七年,上合组织国家电影节再度在中国举办
  • 印控克什米尔发生恐袭事件,外交部:中方反对一切形式的恐怖主义
  • 马上评丨冒名顶替上中专,为何一瞒就是30多年?
  • 禾赛:车载激光雷达走向标配,核心能力可在机器人领域复用