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

LeetCode:20. 有效的括号(java)

题目描述:

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"

输出:true

示例 2:

输入:s = "()[]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([])"

输出:true

代码:

public boolean isValid(String s) {
        ArrayStack<Character> stack = new ArrayStack<>(s.length());
        //如果遇到左括号,把匹配的右括号压入栈中
        //如果遇到右括号,判断栈顶元素是否是匹配的左括号
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == '(') {
                stack.push(')');
            } else if (c == '[') {
                stack.push(']');
            } else if (c == '{') {
                stack.push('}');
            } else {
                if (!stack.isEmpty()&&c == stack.peek()) {//peek()是不移除的
                    stack.pop();//删掉栈顶元素
                } else {
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }


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

相关文章:

  • 掌握命令行参数的艺术:Python的`argparse`库
  • StarRocks 生产部署一套集群,存储空间如何规划?
  • 0009.基于springboot+layui的ERP企业进销存管理系统
  • Spring Security 6 系列之七 - 自定义异常管理
  • 如何实现圆形头像功能
  • VSCode搭建Java开发环境 2024保姆级安装教程(Java环境搭建+VSCode安装+运行测试+背景图设置)
  • 计算机网络网络层笔记
  • golang 实现比特币内核:椭圆曲线有限域的代码实现
  • #渗透测试#SRC漏洞挖掘# 操作系统-windows系统bat病毒
  • 有线电视 1.27.5 | 完全免费的电视直播应用,频道丰富,画质清晰
  • 成功解决WSL2上的Ubuntu22.04执行sudo apt-get update指令报错问题
  • 基于A*算法的无人车路径规划
  • 高斯飞溅OccGaussian 人体重建
  • IP-guard与Ping32文档加密解决方案对比,选择适合自己的解决方案
  • glsl基于LTC的面光源渲染 - 矩形光通过three.js
  • Java基础-Java中的常用类(上)
  • 服务器作业3
  • H7-TOOL的LUA小程序教程第17期:扩展驱动AD7606, ADS1256,MCP3421, 8路继电器和5路DS18B20(2024-11-01)
  • RPC核心实现原理
  • 华为eNSP:配置DHCP Snooping
  • 梁山派入门指南3——串口使用详解,包括串口发送数据、重定向、中断接收不定长数据、DMA+串口接收不定长数据,以及对应的bsp文件和使用示例
  • 冒泡排序、选择排序、计数排序、插入排序、快速排序、堆排序、归并排序JAVA实现
  • 小新学习k8s第四天之发布管理
  • Pr 视频效果:透视
  • 【Nginx】前端项目开启 Gzip 压缩大幅提高页面加载速度
  • Ant Design Vue 的 a-table 行选择分页时bug处理