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

栈:有效的括号

题目描述:给定一个只包含‘[’,'{','(',')','}',']'的字符串,判断该字符串是否括号有效。

括号有效的要求是:

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

示例 1:

        输入:s = "()"

        输出:true

示例 2:

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

        输出:true

示例 3:

        输入:s = "(]"

        输出:false

示例 4:

        输入:s = "([])"

        输出:true

示例 5:

        输入:s = "([)]"

        输出:false


求解思路:

把左括号放入栈中,遇到右括号时,让右括号和栈顶元素进行匹配。

匹配的过程可以通过map实现。

时间复杂度:O(n)

空间复杂度:O(1)

class Solution {public boolean isValid(String s) {if (s == null || s == "" || s.length() % 2 == 1) { //奇数长度不符合return false;}HashMap<Character, Character> map = new HashMap<>();map.put(')', '(');map.put('}', '{');map.put(']', '[');Deque<Character> stack = new ArrayDeque<>();for (char ch : s.toCharArray()) {if (!stack.isEmpty() && map.containsKey(ch) && stack.peek() == map.get(ch)) {stack.pop(); // 匹配到就弹出栈顶} else {stack.push(ch); //把({[放进栈中}}return stack.isEmpty();}
}

练习地址:20. 有效的括号 - 力扣(LeetCode)

http://www.xdnf.cn/news/20145.html

相关文章:

  • Dify-CHATflow案例
  • JS中的String的常用方法
  • Process Explorer 学习笔记(第三章3.2.3):工具栏与参考功能
  • 知微集:Python中的线程(三)
  • JavaScript 中的并发编程实践与误区:一次深入的探讨
  • 软考高级 — 系统规划与管理师考试知识点精要
  • 电脑活动追踪全解析:六款软件助企业实现数字化精细管理
  • whl编译命令作用解释
  • 【完整源码+数据集+部署教程】加工操作安全手套与手部检测系统源码和数据集:改进yolo11-cls
  • mysq集群高可用架构之组复制MGR(单主复制-多主复制)
  • 2025 年 8 个最佳网站内容管理系统(CMS)
  • 小迪安全v2023学习笔记(七十八讲)—— 数据库安全RedisCouchDBH2database未授权CVE
  • LeetCode 刷题【65. 有效数字】
  • 机器学习算法介绍二
  • postgresql 通过dblink实现 跨库查询
  • PostgreSQL收集pg_stat_activity记录的shell工具pg_collect_pgsa
  • zoho crm notes add customer fields
  • 数字人打断对话的逻辑
  • 本地 Ai 离线视频去水印字幕!支持字幕、动静态水印去除!
  • python-虚拟试衣
  • LVS、Nginx与HAProxy负载均衡技术对比介绍
  • 任意齿形的齿轮和齿条相互包络工具
  • Linux常见命令总结 合集二:基本命令、目录操作命令、文件操作命令、压缩文件操作、查找命令、权限命令、其他命令
  • Process Explorer 学习笔记(第三章3.2.5):状态栏信息详解
  • PyTorch 训练显存越跑越涨:隐式保留计算图导致 OOM
  • 机器学习周报十二
  • 基于Echarts+HTML5可视化数据大屏展示-旅游智慧中心
  • CC-Link IE FB 转 DeviceNet 实现欧姆龙 PLC 与松下机器人在 SMT 生产线锡膏印刷环节的精准定位控制
  • docker 安装kafaka常用版本
  • 错误波形曲线