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

LeetCode【32】最长的有效括号

题目:
在这里插入图片描述

思路:

括号字符串依次入栈,删除匹配的成对括号。最后栈中留下的都是无法匹配的断点。这些断点的差值减一就是断点间有效括号串的长度,取这些长度的最大值即可。
例如括号字符串 “)()((())(”,最后留在栈中的字符下标为 0 3 8。根据这三个断点可以得到,两个有效括号子串的长度分别为 3-0-1 = 2 和 8-3-1=4。所以最长的长度就是 4。

https://www.jianshu.com/p/e6b6e3b964d8

代码:

public int longestValidParentheses(String s) {
    if(s.length() <= 1) return 0;
    List<Integer> stack = new ArrayList<>();
    for(int i = 0; i < s.length(); ++i){
        if(!stack.isEmpty() 
                && s.charAt(i) == ')' 
                && s.charAt(stack.get(stack.size()-1)) == '(') stack.remove(stack.size()-1);
        else stack.add(i);
    }
    stack.add(s.length());
    int longest = stack.get(0);
    int diff;
    for(int i = 1; i < stack.size(); ++i){
        if((diff = stack.get(i)-stack.get(i-1)-1) > longest) longest = diff;
    }
    return longest;
}

http://www.kler.cn/news/134866.html

相关文章:

  • 系列七、GC垃圾回收【四大垃圾算法-标记压缩算法】
  • Prompt提示词——什么是CRISPE框架?QCIPSPE框架?
  • 通达信的ebk文件
  • IDA的各个视图的含义,View-A、Hex View-1等
  • 大数据基础设施搭建 - MySQL
  • 合并两个有序链表(冒泡排序实现)
  • 【MySql密码爆破脚本】用于其他爆破工具无法使用的情况下
  • 概念解析 | 网络安全数字孪生(Digital Twin of Cyber Security, DTCS)技术
  • 力扣刷题:1. 两数之和
  • windows通过命令给文件夹或文件增加权限
  • linux c与c++库互相调用
  • Nginx(反向代理,负载均衡,动静分离)
  • 7.22 SpringBoot项目实战【收藏 和 取消收藏】
  • OpenHarmony Meetup北京站招募令
  • 个人博客汇总
  • C语言-求一个整数储存在内存中的二进制中1的个数
  • 多对多的创建方式与Ajax
  • 适合您的智能手机的 7 款优秀手机数据恢复软件分享
  • 现货白银MACD实战分析例子
  • 【latex】公式推导等号对齐
  • servlet乱码问题
  • easyExcel注解详情
  • Python UI自动化 —— 关键字+excel表格数据驱动
  • “一键搜索,海量商品任你选!多平台聚合,购物更便捷!“
  • Django 入门学习总结2 创建一个投票系统
  • 【MySQL】CONCAT、CONCAT_WS、GROUP_CONCAT 函数用法
  • 【产品应用】一体化伺服电机在系留无人机中的应用
  • mfc140u.dll丢失的解决方法,以及mfc140u.dll解决方法的优缺点
  • debian/ubuntu/linux如何快速安装vscode
  • MySQL 8.0:性能优化与新功能