经典括号匹配问题——你真的明白了吗?

简介: 经典括号匹配问题——你真的明白了吗?

前言:

括号匹配问题是经典中的经典,是学习栈的经典例题,今天就再解剖一下这一经典例题,且看下文!

利用LeetCode的经典题目,详细揭开括号匹配问题的神秘面纱。

题目链接:有效的括号

题目描述:

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入: “()”

输出: true

示例 2:

输入: “()[]{}”

输出: true

示例 3:

输入: “(]”

输出: false

算法思想及解析:

注意这一段代码:

括号一定是匹配的,要不然是会出错的。

还有别忘记再判断栈是否为空了

完整代码实现:

1. class Solution {
2. public boolean isValid(String s) {
3. 
4.             Stack<Character>stack=new Stack<>();
5. 
6. for(int i=0;i<s.length();i++){
7. char ch=s.charAt(i);
8. if(ch=='('||ch=='['||ch=='{'){//左括号入栈
9.                     stack.push(ch);
10.                 }else{          //右括号匹配则出栈,不匹配就是false
11. 
12. if(!stack.empty()&&stack.peek().equals(stackOf(ch))){
13. 
14.                     stack.pop();
15. 
16.                 }else{
17. return false;
18.                 }
19. 
20. 
21.                 }
22. 
23.             }
24. 
25. if(stack.empty()){
26. return true;
27.             }else{
28. return false;
29.             }
30.     }
31. 
32. public char stackOf(char ch){
33. if(ch==')')return '(';
34. if(ch==']')return '[';
35. return '{';
36. 
37.     }
38. }

代码调试无误:


相关文章
|
NoSQL 安全 Java
SpringBoot系列(2)整合MongoDB实现增删改查(完整案例)
自己本科时候一直使用的是Mysql,目前的课题组使用的是MongoDB,因此就花了一部分时间整理了一下,实现springboot与MongoDB的整合,并且实现基本的增删改查操作,从头到尾给出一个完整的案例。
1265 0
SpringBoot系列(2)整合MongoDB实现增删改查(完整案例)
|
消息中间件 存储 缓存
Kafka 架构和原理机制 (图文全面详解)
一文了解掌握 Kafka 的基本架构、原理、特性、应用场景,以及Zookeeper 在 kafka 的作用。
Kafka 架构和原理机制 (图文全面详解)
|
存储 数据采集 缓存
Bitmap 和 布隆过滤器傻傻分不清?你这不应该啊
大家好,我是小富。本文介绍了 Redis 的 Bitmap 和布隆过滤器的区别与关系,包括它们的底层原理、应用场景及优缺点。Bitmap 以 bit 为单位存储数据,适用于记录二值状态,如用户签到、在线状态等。布隆过滤器通过多个哈希函数优化哈希碰撞问题,适用于大规模数据的快速判断,如缓存穿透、邮箱黑名单过滤等。两者都能高效处理大数据量和高并发场景。
575 122
|
10月前
|
Devops Java 应用服务中间件
你们团队的规范吃灰去了吗,如何落地团队规范?
本文探讨了项目团队中常见的沟通问题及其解决方案。通过制定统一的规范,可以降低沟通成本,提高团队效率。然而,规范的落地成为新的挑战。借助自动化工具和平台,如DevOps工具链,可以有效解决这一问题。文中介绍了几种主要的DevOps工具及其应用场景,帮助团队实现高效协作。
138 0
|
存储 Prometheus 监控
Prometheus 存储方案与优化
【8月更文第29天】Prometheus 是一个流行的开源监控系统,它使用时间序列数据库来存储监控数据。Prometheus 的时间序列数据库是基于本地文件系统的,这种设计提供了高吞吐量的读写能力,但同时也带来了存储方面的挑战。本文将详细介绍 Prometheus 存储的工作原理,并提出一些优化策略以减少磁盘占用。
1205 1
|
文字识别 算法 API
视觉智能开放平台产品使用合集之保存视频图片,存到自己服务器,该如何操作
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
137 0
|
存储 JSON NoSQL
SpringBoot集成MongoDB
MongoDB 是一个基于分布式文件存储的数据库,c++编写,可扩展高性能数据存储方案。MongoDb介于关系型数据库和非关系型数据库之间,是非关系型数据库中功能最多的,最像关系型数据库。数据结构非常松散可以存储非常复杂的数据对象。Mongodb支持的查询语言非常强大,语法类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的所有功能,而且还支持对数据建立索引。
596 1
SpringBoot集成MongoDB
|
Linux C语言
进程内存空间
进程内存空间
80 0
|
NoSQL Java 数据库
dockercompose详解以及何如使用redisDesktopManager客户端
dockercompose详解以及何如使用redisDesktopManager客户端
258 0
Qt在QTableWidget、View等表格中添加右击菜单
Qt在QTableWidget、View等表格中添加右击菜单
1267 0