力扣热题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/8 17:33:14 阅读更多 →

最新新闻

C++面向对象编程实践:从零构建贪吃蛇游戏框架

C++面向对象编程实践:从零构建贪吃蛇游戏框架

1. 项目概述与核心价值最近在带几个刚学完C基础语法的朋友做项目,发现他们虽然能写循环、会用指针,但一提到“做个东西出来”,往往就卡在了如何组织代码上。这让我想起了自己当年学编程的经历,从“会写语法”到“能写项目”&#…

2026/7/8 17:32:38 阅读更多 →
Figma中文汉化终极指南:3分钟让你的设计工具说中文

Figma中文汉化终极指南:3分钟让你的设计工具说中文

Figma中文汉化终极指南:3分钟让你的设计工具说中文 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而烦恼吗?作为中文设计师,你…

2026/7/8 17:32:38 阅读更多 →
AD7490与PIC32MZ2048EFH144的嵌入式信号采集系统设计

AD7490与PIC32MZ2048EFH144的嵌入式信号采集系统设计

1. AD7490与PIC32MZ2048EFH144的硬件选型解析在嵌入式信号采集系统中,模数转换器(ADC)的选择直接影响系统性能。AD7490是ADI公司推出的16位、1MSPS逐次逼近型(SAR)ADC,具有以下核心特性:真16位分辨率,无失码1MSPS采样率&#xff0…

2026/7/8 17:32:38 阅读更多 →
3分钟上手Seraphine:英雄联盟智能助手如何让你的排位赛更轻松

3分钟上手Seraphine:英雄联盟智能助手如何让你的排位赛更轻松

3分钟上手Seraphine:英雄联盟智能助手如何让你的排位赛更轻松 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 还在为英雄联盟排位赛中的各种繁琐操作烦恼吗?Seraphine是一款基于官方LC…

2026/7/8 17:28:35 阅读更多 →
Unity中文路径内存泄漏排查:软连接与命令行参数实战指南

Unity中文路径内存泄漏排查:软连接与命令行参数实战指南

1. 项目概述:当Unity遇上中文路径如果你是一名Unity开发者,尤其是在国内团队工作,那么“项目路径包含中文”这个场景大概率是绕不开的。从美术资源、策划文档到项目根目录,中文命名带来的直观性和管理便利性不言而喻。然而&#x…

2026/7/8 17:26:32 阅读更多 →
Unity 2021 LTS安装XDreamer避坑指南:解决菜单栏消失与兼容性问题

Unity 2021 LTS安装XDreamer避坑指南:解决菜单栏消失与兼容性问题

1. 项目概述:为什么XDreamer在Unity 2021 LTS上安装是个“技术活”? 如果你正在用Unity 2021 LTS版本做项目,并且想引入XDreamer这个强大的扩展工具来提升开发效率,那你很可能已经踩过坑,或者正站在坑边犹豫。这个标题…

2026/7/8 17:26:32 阅读更多 →

日新闻

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/8 16:59:55 阅读更多 →

月新闻