当前位置: 首页 > 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/a/134866.html

相关文章:

  • 使用VSCode搭建Ruby on Rails集成开发环境
  • 【HM-React】08. Layout模块
  • 后盾人JS--JS值类型使用(终章)
  • 【1】Word:邀请函
  • 该虚拟机似乎正在使用中。 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。
  • Perl语言的网络编程
  • 系列七、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】公式推导等号对齐