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

力扣-32.最长有效括号

题目描述

32.最长有效括号

解法一:动态规划

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

小结:注意边界条件,以及两类不同情况()))

解法二:栈

class Solution {public int longestValidParentheses(String s) {Stack<Integer> stack = new Stack<>();int res = 0;stack.push(-1);	// 初始压入-1作为边界条件,便于计算长度 for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == '(') {stack.push(i);} else {stack.pop();	// 先弹出匹配的元素,栈顶是未匹配的边界if (stack.empty()) {	// 如果栈为空,将当前索引作为新的边界压入栈中stack.push(i);} else {res = Math.max(res, i - stack.peek());}}}return res;}
}

小结:括号匹配用栈的思路比较容易想到,但栈中的元素是位置坐标而不是括号,利用下标差来计算长度。

http://www.lryc.cn/news/599373.html

相关文章:

  • Python(32)Python内置函数全解析:30个核心函数的语法、案例与最佳实践
  • 188.买卖股票的最佳时机IV 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费
  • 《C++初阶之STL》【vector容器:详解 + 实现】
  • Python应用append()方法向列表末尾添加元素
  • 深入解析HBase如何保证强一致性:WAL日志与MVCC机制
  • selenium 元素定位
  • 【unitrix】 6.15 “非零非负一“的整数类型(NonZeroNonMinusOne)特质(non_zero_non_minus_one.rs)
  • XCTF-crypto-幂数加密
  • Docker 实战大纲
  • Windows Installer安全深度剖析
  • SQL基础⑭ | 变量、流程控制与游标篇
  • 解放生产力:Amazon API Gateway 与 Amazon Lambda 的优雅组合
  • adb 下载并安装
  • 使用Python绘制金融数据可视化工具
  • SR9900低功耗USB 2.0转百兆以太网控制器芯片,SR9900规格书,SR9900原理图
  • 【第四章:大模型(LLM)】01.神经网络中的 NLP-(1)RNN、LSTM 和 GRU 的基本原理和应用
  • Linux网络框架分析
  • 使用vllm创建相同模型的多个实例,使用nginx进行负载均衡,提高模型吞吐量
  • RabbitMQ—HAProxy负载均衡
  • 数仓主题域划分
  • [linux]Haproxy七层代理
  • Agent领域,近年来的前沿研究方向:多智能体协作、认知启发架构、伦理安全、边缘计算集成
  • 多租户系统中的安全隔离机制设计
  • 【数学建模|Matlab】数学建模「常用作图」示例
  • classgraph:Java轻量级类和包扫描器
  • 【深基12.例1】部分背包问题 Java
  • 深入解析 ArkUI 触摸事件机制:从点击到滑动的开发全流程
  • 本地部署Dify教程
  • 每天算法刷题Day53:7.25:leetcode 栈5道题,用时1h35min
  • [C#] Winform - 加载动画效果