括号匹配问题

简介: 括号匹配问题

🔎前言:

在之前我们学过了栈与队列,本次我们就学习一下如何利用栈去解决一个经典基础问题,那就是括号匹配问题,希望能够帮助大家理解解决这个问题。


🔎题目描述:

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

有效字符串需满足:

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

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

题目链接:括号匹配问题


🎹问题分析:

🎄1 可能存在左括号多的情况

🎄2 可能存在右括号多的情况

🎄3 存在括号不匹配的情况


🔐总结解题思路:

1 我们在遍历字符串的过程中,需要先取得栈顶的元素与右括号比较,看是否匹配,如果匹配才能出栈。

2 在出栈的过程中,如果栈为空,说明右括号多了,如果发现栈顶元素与右括号不是匹配的括号,那么就需要直接return了

3 在整个字符串遍历结束之后,我们要判断一下栈是否为空,如果为空,说明是匹配的,否则就是左括号偏多的情况。


⏳代码实现:

public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        for(int i = 0;i<s.length();i++){
            char ch = s.charAt(i);
            if(ch=='('||ch=='['||ch=='{'){
                stack.push(ch);//左括号进栈
            }else{
                if(stack.empty()){//栈为空,右括号多了
                    return false;
                }else{
                    char ch1 = stack.peek();//取栈顶元素
                if(ch1=='('&& ch ==')'||ch1=='{'&&ch=='}'||ch1=='['&&ch==']'){
                    stack.pop();//匹配出栈
                }else{
                    return false;//括号不匹配
                }
                }
            }
        }
        if(!stack.empty()){
            return false;//栈不为空,左括号偏多了
        }
        return true;
    }
toKeep
+关注
目录
打赏
0
1
1
0
23
分享
相关文章
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
了解应用中的微内核架构
【6月更文挑战第25天】**微内核架构**是将系统服务从内核移出,形成可选插件,增强扩展性和适应性。常见于第三方应用和嵌入式系统,如Linux、L4、WinCE。优点包括清晰结构、移植性和扩展性,但缺点是通信开销大、性能较低,不利于整体优化。适合需要灵活功能组合的场景。
303 5
了解应用中的微内核架构
电子商务网站建设的关键技术
移动端适配是电子商务网站建设中越来越重要的关键技术。综上所述,电子商务网站建设涉及多个关键技术,包括网站设计与用户体验、安全性、性能与可扩展性、搜索引擎优化、移动端适配以及数据分析与营销。掌握这些关键技术,企业可以建设一个安全、高效、用户…
558 0
常见java OOM异常分析排查思路分析
Java虚拟机(JVM)遇到内存不足时会抛出OutOfMemoryError(OOM)异常。常见OOM情况包括:1) **Java堆空间不足**:大量对象未被及时回收或内存泄漏;2) **线程栈空间不足**:递归过深或大量线程创建;3) **方法区溢出**:类信息过多,如CGLib代理类生成过多;4) **本机内存不足**:JNI调用消耗大量内存;5) **GC造成的内存不足**:频繁GC但效果不佳。解决方法包括调整JVM参数(如-Xmx、-Xss)、优化代码及使用高效垃圾回收器。
330 15
常见java OOM异常分析排查思路分析
【Spring】全面讲解IOC、AOP、注入方式、bean的生命周期、aop通知应用 spring与web容器整合
Spring是一个开源的轻量级Java应用开发框架,它提供了一种简单、高效、灵活的方式来构建企业级应用程序。Spring框架的核心特点是依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming),它通过一组模块化的组件提供全面的支持,使开发人员能够快速搭建可扩展、可维护的应用。
深入理解 Nginx 与 Kong 的配置与实践
在微服务架构中,Nginx 用于配置负载均衡,如示例所示,定义上游`pay-service`包含不同权重的服务节点。Kong API 网关则通过service和route进行服务管理和路由,与Nginx的upstream和location类似。通过Kong的命令行接口,可以创建upstream、target、service和route,实现对后端服务的负载均衡和请求管理。Nginx和Kong协同工作,提供高效、灵活的API管理和流量控制。
294 1
深入理解 Nginx 与 Kong 的配置与实践
Datatables展示数据(表格合并、日期计算、异步加载数据、分页显示、筛选过滤)
Datatables展示数据(表格合并、日期计算、异步加载数据、分页显示、筛选过滤)
267 0
Datatables展示数据(表格合并、日期计算、异步加载数据、分页显示、筛选过滤)
RDS for MySQL 表上 Metadata Lock 的产生和处理
RDS for MySQL 表上 Metadata lock 的产生和处理 1. Metadata lock wait 出现的场景 2. Metadata lock wait 的含义 3. 导致 Metadata lock wait 等待的活动事务 4. 解决方案 5. 如何避免出现长时间 Metadata lock wait 导致表上相关查询阻塞,影响业务 1.
2433 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等