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

【Leetcode 热题 100】20. 有效的括号

问题背景

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s s s,判断字符串是否有效。
有效字符串需满足:

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

数据约束

  • 1 ≤ s . l e n g t h ≤ 1 0 4 1 \le s.length \le 10 ^ 4 1s.length104
  • s s s 仅由括号 ‘()[]{}’ 组成

解题过程

经典括号匹配问题,可以用哈希表来映射左右括号辅助匹配,积累一下双大括号的匿名内部类初始化方式。
单纯写判断效率会更高,栈中要存储的是左括号对应的右括号。

具体实现

哈希映射

class Solution {public boolean isValid(String s) {if((s.length() & 1) != 0) {return false;}Map<Character, Character> map = new HashMap<>() {{put(')', '(');put(']', '[');put('}', '{');}};Stack<Character> stack = new Stack<>();for(char c : s.toCharArray()) {if(!map.containsKey(c)) {stack.push(c);} else if(stack.isEmpty() || stack.pop() != map.get(c)) {return false;}}return stack.isEmpty();}
}

直接判断

class Solution {public boolean isValid(String s) {if((s.length() & 1) != 0) {return false;}Stack<Character> stack = new Stack<>();for(char c : s.toCharArray()) {if(c == '(') {stack.push(')');} else if(c == '[') {stack.push(']');} else if(c == '{') {stack.push('}');} else if(stack.isEmpty() || stack.pop() != c) {return false;}}return stack.isEmpty();}
}
http://www.lryc.cn/news/517763.html

相关文章:

  • 比较procfs 、 sysctl和Netlink
  • Leetcode 3413. Maximum Coins From K Consecutive Bags
  • MakeFile使用指南
  • 矩阵碰一碰发视频的视频剪辑功能源码搭建,支持OEM
  • VB.NET CRC32 校验
  • 冒充者综合征上线了
  • 【大模型】百度千帆大模型对接LangChain使用详解
  • Redis相关面试
  • 使用强化学习训练神经网络玩俄罗斯方块
  • java中的日期处理:只显示日期,不显示时间的两种处理方式
  • 腾讯云AI代码助手编程挑战赛——贪吃蛇小游戏
  • 水水水水水
  • Spring整合SpringMVC
  • 【Rust自学】10.4. trait Pt.2:trait作为参数和返回类型、trait bound
  • 嵌入式系统 (2.嵌入式硬件系统基础)
  • Linux 下 Vim 环境安装踩坑问题汇总及解决方法(重置版)
  • OpenAI 故障复盘 - 阿里云容器服务与可观测产品如何保障大规模 K8s 集群稳定性
  • 安卓触摸对焦
  • jupyter出现“.ipynb appears to have died. It will restart automatically.”解决方法
  • 20250108-实验+神经网络
  • 【权限管理】CAS(Central Authentication Service)
  • Golang笔记:使用net包进行TCP监听回环测试
  • 《浮岛风云》V1.0中文学习版
  • Day10——爬虫
  • 10. C语言 函数详解
  • NRC优先级中比较特殊的—NRC0x13和NRC0x31
  • ref() 和 reactive() 区别
  • 深度学习与计算机视觉 (博士)
  • Sprint Boot教程之五十:Spring Boot JpaRepository 示例
  • NaVILA:用于足式机器人导航的VLA模型