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

定个小目标之刷LeetCode热题(45)

32. 最长有效括号

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

子串的长度。

示例 1:

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

有事会暂停更新,总之慢慢积累,今天看一下这道题,有动态规划、栈等解法,本题采用计数器法,思路就是分别定义两个计数器left和rigth,首先从左向右遍历,当遇到左括号时left++,遇到右括号时right++,当left == right时记录此时有效子串的长度maxLength,当right > left时,重置left和right为0,遍历结束后不一定能得到最长有效括号的长度,因为如果输入的是“((((((()”时,此时如果从左向右遍历maxLength依旧为0,我们需要从右向左遍历,需要改变的条件是当left > right时,重置left和right为0,两次不同方向遍历结束后就可以得到maxLength了,时间复杂度为O(n),空间复杂度为O(1),代码如下

class Solution {public int longestValidParentheses(String s) {int left = 0, right = 0, maxLength = 0;// 从左向右遍历for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == '(') {left++;} else {right++;}if (left == right) {maxLength = Math.max(maxLength, right * 2);} else if (right > left) {left = right = 0;}}left = right = 0;// 从右向左遍历for (int i = s.length() - 1; i >= 0; i--) {if (s.charAt(i) == ')') {right++;} else {left++;}if (left == right) {maxLength = Math.max(maxLength, left * 2);} else if (left > right) {left = right = 0;}}return maxLength;}
}

题目链接:题单 - 力扣(LeetCode)全球极客挚爱的技术成长平台

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

相关文章:

  • golang 实现负载均衡器-负载均衡原理介绍
  • spring是如何解决循环依赖的,为什么不是两级
  • 大模型预训练优化参数设置
  • PHP pwn 学习 (2)
  • 【Python学习笔记】:Python爬取音频
  • 4 C 语言控制流与循环结构的深入解读
  • vue排序
  • agv叉车slam定位精度测试标准化流程
  • 实战打靶集锦-31-monitoring
  • 小程序-模板与配置
  • 交叉编译aarch64的Qt5.12.2,附带Mysql插件编译
  • 好用的Ubuntu下的工具合集[持续增加]
  • Xcode 16 beta3 真机调试找不到 Apple Watch 的尝试解决
  • Three.JS 使用RGBELoader和CubeTextureLoader 添加环境贴图
  • k8s logstash多管道配置
  • 【CMU博士论文】结构化推理增强大语言模型(Part 0)
  • Odoo创建一个自定义UI视图
  • Day16_集合与迭代器
  • html2canvas + jspdf 纯前端HTML导出PDF的实现与问题
  • 【JVM】JVM调优练习-随笔
  • 如何解决 CentOS 7 官方 yum 仓库无法使用
  • 分布式唯一id的7种方案
  • 嵌入式物联网在医疗行业中的应用——案例分析
  • C语言 底层逻辑详细阐述指针(一)万字讲解 #指针是什么? #指针和指针类型 #指针的解引用 #野指针 #指针的运算 #指针和数组 #二级指针 #指针数组
  • 【人工智能大模型】文心一言介绍以及基本使用指令
  • AI绘画入门实践|Midjourney 的模型版本
  • Web3时代的教育技术革新:智能合约在学习管理中的应用
  • 云计算实训室的核心功能有哪些?
  • 芯科科技第五届物联网开发者大会走进世界各地,巡回开启注册
  • Python创建Excel表和读取Excel表的基础操作