【Day-20慢就是快】代码随想录-栈与队列-有效的括号

news2024/9/23 19:27:32

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。


栈结构非常适合做对称匹配的题目。
首先搞清楚不匹配的几种情况:

  1. 字符串中左方向的括号多余。
    在这里插入图片描述
  2. 括号没有多余但是括号类型未匹配上。
    在这里插入图片描述
  3. 字符串中右方向的括号多余了。
    在这里插入图片描述

第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false
第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。所以return false
第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false
那么什么时候说明左括号和右括号全都匹配了呢,就是字符串遍历完之后,栈是空的,就说明全都匹配了。

但还有一些技巧,在匹配左括号的时候,右括号先入栈,就只需要比较当前元素和栈顶相不相等就可以了,比左括号先入栈代码实现要简单的多了!

在这里插入图片描述
上面的三个数字对应三种不满足条件的情况。
1是遍历结束但是栈不为空,左括号还存在
2是不匹配
3是遍历过程中栈已经空了,右括号没有匹配的左括号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/931165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis7安装

1. 使用什么系统安装redis 由于企业里面做Redis开发,99%都是Linux版的运用和安装,几乎不会涉及到Windows版,上一步的讲解只是为了知识的完整性,Windows版不作为重点,同学可以下去自己玩,企业实战就认一个版…

会声会影2023全新中文专业版下载安装教程

熟练使用会声会影视频编辑工具,对视频创作过程的帮助是极大的。大家可以放心大胆地去研究会声会影的视频编辑技巧,会声会影2023与以往版本会声会影版本最大的区别是:账户制管理。可以通过账户添加或移除设备,非常便捷。该软件一直…

Vue2向Vue3过度Vuex核心概念mutations

目录 1 核心概念-mutations1.定义mutations2.格式说明3.组件中提交 mutations4.练习5.总结 2 带参数的 mutations1.目标:2.语法2.1 提供mutation函数(带参数)2.2 提交mutation 3 练习-mutations的减法功能1.步骤2.代码实现 4 练习-Vuex中的值…

05.Image Captioning with Semantic Attention

目录 前言泛读摘要Introduction创新/贡献点Related Work 精读输入的注意力模型输出的注意力模型模型学习视觉属性/概念预测实验MS-COCO的性能实验分析 Conclusion 代码略 前言 本课程来自深度之眼《多模态》训练营,部分截图来自课程视频。 文章标题:Ima…

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比 目录 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预…

用AI + Milvus Cloud搭建着装搭配推荐系统教程

以下函数定义了如何将图像转换为向量并插入到 Milvus Cloud 向量数据库中。代码会循环遍历所有图像。(注意:如果需要开启 Milvus Cloud 全新特性动态 Schema,需要修改代码。) 查询向量数据库 以下代码演示了如何使用输入图像查询 Milvus Cloud 向量数据库,以检索和上传…

智能文件批量改名工具,覆盖复制时轻松处理相同文件名!

亲爱的用户们,您是否在批量复制文件时常常被相同文件名困扰,手动一个个改名繁琐又费时?现在,我们为您推出一款智能的文件批量改名工具,帮助您轻松处理复制时的相同文件名,让文件管理更从容! 首…

建设全球研发中心城市,长沙政协将会发挥怎样的作用?

政协力量,会如何推动一座城市的发展?在全国各大城市都力“拼经济、搞创新”的时代大背景下,人民政协的力量会如何助推长沙建设全球研发中心城市呢? 这是笔者此前一直很好奇的两个问题。8月24日,一场由长沙市政协举办的…

bex5-设计器连接本地BIZModel

注意platformRcp-new(设计器)与BIZModel要配套,不可版本不一致; tomcat启动使用jdk1.7 BIZModel修改数据源 在\BeX5_V3.6-ent-20210418\runtime\BizModel\WEB-INF\conf目录下修改database.xml中改为项目使用的数据源 web.xml中…

解决无法远程连接MySQL服务的问题

① 设置MySQL中root用户的权限: [rootnginx-dev etc]# mysql -uroot -pRoot123 mysql> use mysql; mysql> GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY Root123 WITH GRANT OPTION; mysql> select host,user,authentication_string from user; -…

锂电池老化房监测软件功能介绍

锂电池高温老化房的监测软件通常用于监测和记录锂电池在高温环境下的温度、电压、电流等参数。这些软件可以提供实时数据监测、数据记录和报表生成等功能,帮助用户监控锂电池的性能和稳定性。 监测软件:某些锂电池高温老化房配备了监测系统,…

Linux操作系统--linux概述

1.Linux概述 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统(OS)。简单的说就是一种操作系统。在日常中常见的操作系统有一下三种: 2.linux起源和背景 (1).linux的诞生 linux操作系统是由李纳斯托瓦兹&#xf…

了解gcc的编译过程

先在msys2下gcc编译一个helloworld的C程序,默认没有gcc, 用pacman安装, 安装好; 构建运行hello C程序; 根据网上一些资料, GCC的编译包括四个阶段:预处理、编译、汇编和链接。分别使用了cc1、a…

硅谷的魔法:如何塑造了全球技术的未来

硅谷的创新文化简介 硅谷,位于美国加利福尼亚州的圣克拉拉谷,已经从一个半导体产业的中心发展成为全球技术创新的代名词。这里集结了全球最顶尖的技术公司、创业者和投资者,共同创造了一个技术创新的奇迹。 起源与发展 硅谷的起源与斯坦福大…

广州华锐互动:VR禁毒普法互动体验,让每一记警示都直击心灵

随着科技的发展,我们的教育工具和方法也在不断进步和创新。其中,虚拟现实(VR)技术的出现为我们提供了一种全新的宣传和教育方式。虚拟现实(VR)是一种让人们在仿真环境中体验、交互和操纵虚拟物体的技术。用…

【java】【项目实战】[外卖四]分类管理业务开发

前言:公共字段自动填充实现,删除业务逻辑实现 一、公共字段自动填充 1.1 问题分析 1.2 代码实现 1.2.1 修改实体类Employee package com.runa.reggie.entity;import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.…

c++存取dat数据

众所周知,dat是一个类似加密的二进制格式文件,很多人喜欢将游戏数据保存在dat文件中,只有知道你的存放格式,才能够将数据破解出来,因而研究了dat文件的存取方式。其实就是c文件的操作,只不过是在取的时候需…

批量记录当天收支明细,自动备份财务管理无忧!

在现代繁忙的生活中,财务管理变得越来越重要。我们为你提供了一款电脑高效记账专家,让你能够快速批量记录当天的收支明细,并设置自动备份,让财务管理变得更轻松 首先,第一步进入晨曦记账本主页面,点击上方功…

AutoCAD软件安装包分享

目录 一、软件简介 二、下载地址 一、软件简介 AutoCAD是一款专业的计算机辅助设计软件,用于帮助工程师、设计师和建筑师创建和编辑二维和三维模型。它提供了丰富的工具和功能,可以用于绘制、修改和分析各种设计项目。 AutoCAD具有直观的用户界面&am…

c++ qt--事件(第六部分)

c qt–事件(第六部分) 一.编辑伙伴,编辑顺序(按TAB进行切换) 1.编辑伙伴 此功能在设计界面如下的位置 1.设置伙伴关系 鼠标左键长按一个Label组件然后把鼠标移到另一个组件上 2.伙伴关系的作用 伙伴关系的作用就是…