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

【Leetcode 热题 100】32. 最长有效括号

问题背景

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

数据约束

  • 0 ≤ s . l e n g t h ≤ 3 × 1 0 4 0 \le s.length \le 3 \times 10 ^ 4 0s.length3×104
  • s [ i ] s[i] s[i] 为 ‘(’ 或 ‘)’

解题过程

这题可以用栈来解决,还是挺简单的,困难的是用动态规划来实现。
新年的第二天,偷偷懒,这题就留到手边事情告一段落,专门训练动态规划的时候再写一次。

具体实现

class Solution {
    public int longestValidParentheses(String s) {
        int res = 0;
        Stack<Integer> stack = new Stack<>();
        for (int left = 0, right = 0; right < s.length(); right++) {
            // 左括号通通入栈
            if (s.charAt(right) == '(') {
                stack.push(right);
            } else {
                if (!stack.isEmpty()) {
                    stack.pop();
                    // 栈为空,结算整个范围上的最大值
                    if (stack.isEmpty()) {
                        res = Math.max(res, right - left + 1);
                    // 栈不为空,则结算当前有边界到栈顶位置之间的长度,注意长度的修正
                    } else {
                        res = Math.max(res, right - stack.peek());
                    }
                } else {
                    // 遇到栈为空的情形,移动左边界进行下一轮的计算
                    left = right + 1;
                }
            }
        }
        return res;
    }
}

http://www.kler.cn/a/525511.html

相关文章:

  • ping命令详解Type 8和0 或者Type 3
  • 【C语言】内存函数
  • Linux pkill 命令使用详解
  • [论文总结] 深度学习在农业领域应用论文笔记14
  • Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊(毛玻璃)对比,Kotlin
  • 【leetcode】T1599
  • 深入探讨:服务器如何响应前端请求及后端如何查看前端提交的数据
  • 大模型知识蒸馏技术(2)——蒸馏技术发展简史
  • vscode软件操作界面UI布局@各个功能区域划分及其名称称呼
  • 留学生scratch计算机haskell函数ocaml编程ruby语言prolog作业VB
  • Java实现.env文件读取敏感数据
  • Flutter 新春第一弹,Dart 宏功能推进暂停,后续专注定制数据处理支持
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.26 统计圣殿:从描述统计到推断检验
  • 安卓(android)订餐菜单【Android移动开发基础案例教程(第2版)黑马程序员】
  • arkts bridge使用示例
  • [Python学习日记-80] 用 socket 实现文件传输功能(上传下载)
  • 设计模式 - 行为模式_Template Method Pattern模板方法模式在数据处理中的应用
  • C#方法作用
  • Java基础知识总结(二十八)--可变参数(...)、静态导入、枚举
  • JMeter插件 Arrivals Thread Group 源码解析:实现原理与性能测试中的应用
  • C24.【C++ Cont】结构体
  • springboot 简化 spring开发
  • 智能家居能源管理系统:Python与AI的完美结合
  • QT设置应用程序图标
  • LeetCode:56.合并区间
  • 工业相机常用词语解释