力扣热题100 20. 有效的括号
给定一个只包括 ‘(’‘)’‘{’‘}’‘[’‘]’ 的字符串 s 判断字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例 1输入s “()”输出true示例 2输入s “()[]{}”输出true示例 3输入s “(]”输出false示例 4输入s “([])”输出true示例 5输入s “([)]”输出false这个题目其实是一个阅读理解题示例 5输入s “([)]”输出false这个 示例懂了就行了。简言之只要遇见右括号然后和栈中栈顶数据比较是一对就返回不是则不对。即当前右括号对应的左边 必须在栈顶。public boolean isValid(String s){// 余1 一定是奇数不成对返回falseif(s.length()%21){returnfalse;}MapCharacter, Characterpairsnew HashMapCharacter, Character();pairs.put(),();pairs.put(],[);pairs.put(},{);DequeCharacterstacknew ArrayDeque();for(int i0;is.length();i){char curs.charAt(i);// 如果是左括号则不包含在pairs 的key 中入栈。 // 如果是右括号则包含在pairs 的key 中判断栈是否为空为空返回false否则出栈判断栈顶元素和当前字符是否匹配不匹配返回false匹配则继续循环。if(pairs.containsKey(cur)){if(!stack.isEmpty()){// 如果栈顶元素门和当前字符锁对应的门匹配则出栈否则返回false final Character popstack.pop();if(pop!pairs.get(cur)){returnfalse;}}else{returnfalse;}}else{stack.push(cur);}}returnstack.isEmpty();}为什么字典Map里要写成 ‘)’ → ‘(’而不是 ‘(’ → ‘)’ 举个例子“([)]”看到(→ 开圆门 → 记在心里入栈看到[→ 开方门 → 记在心里入栈 现在心里记得先开了圆门再开了方门方门是最新的看到)→ 要关圆门了 小明立刻查记忆本“关)门应该对应哪个开门动作”记忆本说( 但他心里记得最近开的是方门[[≠(→ ❌ 配不上游戏失败 关键只有“关门”的时候才需要查“该配哪个开门动作”所以字典必须以“关门动作”为 key❌ 如果反过来写错误方式假如小明的记忆本写成开门动作对应的关门动作()[]那会怎样当他看到(开门他会想“哦以后要关)” —— 但这没用因为他不知道什么时候关也不知道关的时候是否匹配。当他看到)关门他查不到因为字典里没有以)为 key 的记录。 他就不知道该配哪个开门动作❌ 完全没法判断这个题目很容易理解为只要字符串中存在对应的右括号不要求顺序、不要求连续闭合就算有效” 新题其实变成了检查每种括号的左、右出现次数是否相等。️ 解法思路新题不需要栈只需要计数器统计 ‘(’ 和 ‘)’ 的数量统计 ‘{’ 和 ‘}’ 的数量统计 ‘[’ 和 ‘]’ 的数量如果每一对的数量都相等就返回 true。/** * 只要字符串中存在对应的右括号不要求顺序、不要求连续闭合就算有效 */ public boolean isValid2(String s){if(s.length()%21){returnfalse;}int round0;int square0;intcurly0;for(int i0;is.length();i){char curs.charAt(i);if(cur()round;elseif(cur))round--;elseif(cur[)square;elseif(cur])square--;elseif(cur{)curly;elseif(cur})curly--;}returnround0square0curly0;}

相关新闻

大数据ODS、DWD、DWS、ADS 分层

大数据ODS、DWD、DWS、ADS 分层

ODS、DWD、DWS、ADS 含义解析 在数据仓库分层架构中,ODS、DWD、DWS、ADS 是最常见的四个核心层级,它们各自承担不同的数据处理与服务职责,形成自下而上的数据加工链路。 ODS(Operational Data Store,操作数据层&…

2026/7/8 2:27:13 阅读更多 →
基于Spring Boot开发的大学生校内自习室座位预约系统源码+文档

基于Spring Boot开发的大学生校内自习室座位预约系统源码+文档

大学生校内自习室座位预约系统 项目介绍 基于Spring Boot开发的Web应用系统,采用Java技术栈,支持完整的业务功能 大学生校内自习室座位预约系统是一个基于 Spring Boot 框架开发的 Web 应用系统。本项目采用当前主流的 Java 技术栈,结合前后…

2026/7/8 1:56:37 阅读更多 →
Node.js 创建第一个应用

Node.js 创建第一个应用

Node.js 创建第一个应用 引言 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它允许开发者使用 JavaScript 来编写服务器端代码。Node.js 的出现使得 JavaScript 从浏览器扩展到了服务器端,极大地促进了全栈开发的发展。本文将带您从零开始,创建一个简单的 …

2026/7/5 6:32:28 阅读更多 →

最新新闻

pyrDown () 与 resize () 核心区别(OpenCV)

pyrDown () 与 resize () 核心区别(OpenCV)

pyrDown () 与 resize () 核心区别(OpenCV) 一、函数基础作用 1. pyrDown 高斯金字塔下采样(图像缩小专用) cpp 运行 void pyrDown(InputArray src, OutputArray dst, const Size& dstsize = Size(), int borderType = BORDER_DEFAULT);固定逻辑: 先对原图做55 高…

2026/7/8 16:43:15 阅读更多 →
NBM7100A芯片在低功耗嵌入式设备中的优化应用

NBM7100A芯片在低功耗嵌入式设备中的优化应用

1. 项目背景与核心挑战 在低功耗嵌入式设备设计中,不可充电的初级电池(如CR2032纽扣电池)面临着两大核心挑战:一是高脉冲电流需求导致的电压骤降,二是电池容量利用率低下。以典型的无线传感器节点为例,休眠…

2026/7/8 16:43:15 阅读更多 →
JMeter压测端口枯竭:Windows系统优化与连接复用实战

JMeter压测端口枯竭:Windows系统优化与连接复用实战

1. 项目概述:当JMeter在Windows上“无路可走” 如果你在Windows上用JMeter做性能压测,跑着跑着突然看到控制台疯狂刷出 java.net.BindException: Address already in use: connect 这样的错误,然后线程就开始大量失败,请求成功率…

2026/7/8 16:41:06 阅读更多 →
3分钟完成Windows和Office智能激活:KMS_VL_ALL_AIO完整使用指南

3分钟完成Windows和Office智能激活:KMS_VL_ALL_AIO完整使用指南

3分钟完成Windows和Office智能激活:KMS_VL_ALL_AIO完整使用指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows激活弹窗而烦恼?Office功能受限影响工作效率…

2026/7/8 16:38:54 阅读更多 →
静态资源路径穿越漏洞剖析:从原理到防御的完整指南

静态资源路径穿越漏洞剖析:从原理到防御的完整指南

1. 项目概述:一次典型的静态资源路径穿越漏洞剖析最近在梳理开源身份认证项目的安全性时,Casdoor 这个项目引起了我的注意。Casdoor 是 Casbin 开源社区推出的一个基于 OAuth 2.0 / OIDC 的中心化单点登录平台,很多开发者会用它来快速构建自己…

2026/7/8 16:38:54 阅读更多 →
SAST工具深度兼容国标实践:统一漏洞度量与DevSecOps集成

SAST工具深度兼容国标实践:统一漏洞度量与DevSecOps集成

1. 项目概述:当SAST工具遇上国标,我们谈的究竟是什么? 在软件安全开发领域,静态应用程序安全测试(SAST)早已不是什么新鲜词。无论是商业化的Fortify、Checkmarx,还是开源的SonarQube、Semgrep&a…

2026/7/8 16:38:54 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻