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

最长有效括号力扣--32

目录

题目

分析

补充示例

推导

java语言

python语言


题目

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

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

示例 1:

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

示例 2:

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

示例 3:

输入:s = ""输出:0

提示:

  • 0 <= s.length <= 3 * 104
  • s[i]'('')'

分析

这里为了方便理解,多补充几个示例:

补充示例

示例1:字符串:()(())

索引:0 1 2 3 4 5

最终最长有效括号是:6

示例2:输入:"((()))"

整个串都有效

结果:6

推导

dp[i]表示以i结尾的最长有效括号长度

有两种情况:

如果s[i]为当s[i-1]为那么dp[i]=dp[i-2]+2,这里需要额外判断一下i-2是否大于0,不然报错。

另一种情况是比如示例2:是嵌套的,当i为4时候,i-1也为),但是其实他是一对一对对应的,那么就判断i-dp[i-1]-1(i减去已有连续字串的长度再减1)是否大于0,且他是否为(,如果满足以上两个条件,那么递推公式为dp[i] = dp[i-1] + 2 + dp[i-dp[i-1]-2];刚开始不明白为什么还要加do[i-dp[i-1]-2],给出示例1,当遍历到5的时候,如果没有后半部分,那么dp[5]=dp[4]+2=4,此时漏加了前半部分的(),只统计了后半部分,dp[i-dp[i-1]-2]=dp[5-dp[4]-2]=dp[5-2-2]=dp[1]=2,加上以后才为最终结果

java语言

class Solution { public int longestValidParentheses(String s) { int [] dp=new int[s.length()]; int result=0; for(int i=0;i<s.length();i++){ if(i>0 && s.charAt(i)==')'){ if(s.charAt(i-1)=='('){ dp[i]=(i-2>=0 ? dp[i-2]+2:2); }else if(s.charAt(i-1)==')' && i-dp[i-1]-1>=0 && s.charAt(i-dp[i-1]-1)=='('){ dp[i]=dp[i-1]+2+(i-dp[i-1]-2>=0?dp[i-dp[i-1]-2]:0); } } result=Math.max(result,dp[i]); } return result; } }

python语言

class Solution: def longestValidParentheses(self, s: str) -> int: n=len(s) dp=[0]*n res=0 for i in range(n): if i>0 and s[i]==")": if s[i-1]=="(": dp[i]=dp[i-2]+2 elif s[i-1]==")" and i-dp[i-1]-1>=0 and s[i-dp[i-1]-1]=="(": dp[i]=dp[i-1]+2+dp[i-dp[i-1]-2] if dp[i]>res: res=dp[i] return res
http://www.jsqmd.com/news/611096/

相关文章:

  • MIT AI工具一分钟预览高度逼真3D打印成品外观,所见即所得
  • 2026年热门的泸州塑料设备焊接服务/塑料设备焊接/泸州塑料设备焊接/塑料设备焊接加工公司对比推荐 - 行业平台推荐
  • 智慧农业草莓成熟度识别 基于cnn的YOLOv11深度学习 智慧农业草莓成熟度目标检测系统 草莓识别系统(数据集使用 YOLOv11 进行草莓成熟度计数与检测 注意:此模块是在以下资源的+模型+界面)
  • 2026年热门的玻璃钢防腐/泸州玻璃钢防腐施工/玻璃钢防腐工程主流厂家对比评测 - 行业平台推荐
  • OpenClaw版本升级:Qwen2.5-VL-7B兼容性测试与迁移指南
  • IDEA 2023配置Resin启动泛微Ecology 9项目,解决高版本不支持问题
  • Claude Code 权限 / 安全审查调用流程图
  • OpenClaw故障排查大全:千问3.5-27B接口连接7类错误解决
  • 2026年4月叉装车出租正规机构推荐,行业内叉装车出租正规公司有哪些君顺联合满足多元需求 - 品牌推荐师
  • SolidWorks 2019 + Fusion 360:手把手教你搞定复杂机械臂模型的URDF导出(附开源模型)
  • Shell脚本中的算术运算:let、(())、expr三种方式全解析(附避坑指南)
  • 避坑指南:MediaPipe安装常见报错解决方案(附虚拟环境配置技巧)
  • OpenClaw+千问3.5-9B社交媒体管理:定时发布与智能互动
  • Element给所有弹窗组件增加属性
  • VisionMaster实战:高效提取图像中的几何与文字信息
  • 有限状态机进阶指南:5个HFSM设计模式解决复杂业务逻辑
  • ComfyUI实战:Qwen-Image三大ControlNet方案深度评测与选型指南
  • pytorch基础入门day01
  • Origin科研绘图实战——三步搞定带置信区间的专业图表
  • GD32_ADC多通道扫描+DMA高效数据传输实战解析
  • 2026年知名的注塑模内贴/酸奶杯模内贴/浙江食品级模内贴/浙江模内贴标签源头工厂推荐 - 行业平台推荐
  • 保姆级教程:用PyTorch 1.13+全卷积网络搞定MSTAR SAR图像分类(附完整代码)
  • 2026年知名的河北移动式脚手架/折叠式脚手架可靠供应商推荐 - 行业平台推荐
  • OpenClaw+百川2-13B-4bits:自动化简历筛选工具搭建
  • һ���������� Code Agent ����ĵ�
  • codex解决中文乱码问题
  • 2026年热门的外墙喷涂保温/硬泡聚氨酯喷涂保温多家厂家对比分析 - 行业平台推荐
  • 单细胞测序实战:从原始数据到高质量细胞图谱的R/Seurat预处理全流程
  • OpenClaw备份策略:千问3.5-27B智能压缩历史聊天记录
  • 2026年比较好的折叠式脚手架/河北脚手架/可镀锌脚手架长期合作厂家推荐 - 行业平台推荐