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

LeetCode32. 最长有效括号(2024冬季每日一题 32)

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

示例 1:

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

示例 2:

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

示例 3:

输入:s = “”
输出:0

提示:

  • 0 < = s . l e n g t h < = 3 ∗ 1 0 4 0 <= s.length <= 3 * 10^4 0<=s.length<=3104
  • s[i]'('')'

思路:

  • 使用栈,将 栈底 元素为当前已经遍历过的元素中「最后一个没有被匹配的右括号的下标」
  • 这样的做法主要是考虑了边界条件的处理,栈里其他元素维护左括号的下标:
  • 对于遇到的每个 ‘(’ ,我们将它的下标放入栈中
  • 对于遇到的每个 ‘)’ ,我们先弹出栈顶元素表示匹配了当前右括号:
    • 如果栈为空,说明当前的右括号为没有被匹配的右括号,我们将其下标放入栈中来更新我们之前提到的「最后一个没有被匹配的右括号的下标」
    • 如果栈不为空,当前右括号的下标减去栈顶元素即为「以该右括号为结尾的最长有效括号的长度」
  • 我们从前往后遍历字符串并更新答案即可。
  • 注意:一开始栈为空,第一个字符为左括号的时候我们会将其放入栈中,这样就不满足提及的「最后一个没有被匹配的右括号的下标」,为了保持统一,我们在一开始的时候往栈中放入一个值为 −1 的元素
class Solution {
public:int longestValidParentheses(string s) {int maxN = 0, n = s.size();stack<int> stk;stk.push(-1);for(int i = 0; i < n; i++){if(s[i] == '('){stk.push(i);}else{stk.pop();if(stk.empty()){stk.push(i);}else{maxN = max(maxN, i - stk.top());}}}return maxN;}
};
http://www.lryc.cn/news/503790.html

相关文章:

  • Textfocals ——基于大言模型的用户驱动型文本改进工具让用户在审阅自己的写作时对其进行修改
  • docker 部署 redis
  • 微信小程序横屏页面跳转后,自定义navbar样式跑了?
  • 回归预测 | MATLAB实现BiGRU(双向门控循环单元)多输入单输出
  • 智能时代的基石:神经网络
  • 红与黑,,
  • 嵌入式驱动开发详解16(音频驱动开发)
  • 【嵌入式软件】跑开发板的前置服务配置
  • 如何高效实现进程间通信
  • scala基础学习_变量
  • Java 身份证校验工具类(15位校验、18位校验与15转18)
  • HTML+CSS+Vue3的静态网页,免费开源,可当作作业使用
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(8)
  • HCIA-Access V2.5_2_2_2网络通信基础_IP编址与路由
  • 音频客观测评方法PESQ
  • 前后端分离的项目使用nginx 解决 Invalid CORS request
  • 回归预测 | MATLAB实现SVM-Adaboost集成学习结合支持向量机多输入单输出回归预测
  • 常见排序算法总结 (五) - 堆排序与堆操作
  • kubernetes的三种探针ReadinessProbe、LivenessProbe和StartupProbe,以及使用示例
  • 掌握线性回归:从简单模型到多项式模型的综合指南
  • Java:183 基于SSM的高校食堂系统
  • 光谱相机
  • AI绘图:开源Stable Diffusion 3 ComfyUI下载安装方法
  • 一区向量加权算法优化INFO-CNN-SVM卷积神经网络结合支持向量机多特征分类预测
  • AES笔记整理
  • Jmeter 性能压测-Tomcat连接数
  • 基于Vue3的组件封装技巧分享
  • python中r代表什么意思
  • 《量子计算对人工智能发展的深远影响》
  • 12.2【JAVA EXP4]next.js的各种问题,DEBUG,前端补强,前后端交互,springSecurity ,java 配置,h2数据库