【趣味学算法】06_字符串是否合法

注: 本系列仅为个人学习笔记,学习内容为《算法小讲堂》(视频传送门),通俗易懂适合编程入门小白,需要具备python语言基础,本人小白,如内容有误感谢您的批评指正

要写个程序判断给定的字符串 s 中括号的写法是否合法。
下面是约束条件:

  • 字符串仅包含 ‘(’、‘)’、‘[’、‘]’、‘{’、‘}’ 这三对括号的组合
  • 左右括号必须成对编写,比如 “()” 是合法的,“(” 则是非法的
  • 左右括号必须以正确的顺序闭合,比如 “{()}” 是合法的,“{(})” 则是非法的

明显这个问题就是解决括号匹配问题!需要额外使用一个“特殊”的列表来作为临时存储。这个列表之所以特殊,是因为我们需要:

  • 从前往后填入数据,用append() 方法实现
  • 从后往前提取数据,用pop()方法实现

遍历给定的字符串 s 时,当遇到一个左括号时,我们会期望在后续的遍历中,有一个相同类型的右括号将其闭合。比如 “[]” 这样。
但是,如果遇到的场景是类似 “[()]” 这种括号嵌套,也就是连续出现多个左括号,那么先出现的那个就不能急着去匹配,需要等待后面的匹配完,再轮到它。比如 “[()]”,是不是得先匹配内部的 “()”,然后再匹配外部的 “[]”

s = input('请输入测试字符串:')stack = []for c in s:if c == '(' or c == '[' or c == '{':stack.append(c)else:if len(stack) == 0:print('非法!')breakif c == ')':d = '('elif c == ']':d = '['elif c == '}':d = '{'if d != stack.pop():print('非法!')breakelse:if len(stack)!= 0:print('非法')else:print('合法字符串')

比如 “[()]”,第三个元素是 ‘)’,从特殊列表的尾部提取出 ‘(’,匹配成功,放行……继续下一个 ‘]’,此时特殊列表只剩下 ‘[’,匹配成功,遂打印 “合法”

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

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

相关文章

Maven3.6.3安装与配置,IDEA2022.2.3部署Maven操作步骤

1、先确保安装了Java开发环境,并配置了JAVA_HOME环境变量 WinR ,输入cmd,然后输入命令echo %JAVA_HOME%,查看JDK ,接着输入java -version,查看java的版本号 接着系统变量中,配置JAVA_HOME环境变量 2、官网下载MAVEN3.6.3,Maven3.…

3.14

racial a. 种族的 radiation n. 放射,放射物 railway n. 铁路;铁道 rainbow n. 虹,彩虹 raise vt. 使升高; 饲养 random a. 随意的 rank n. 职衔,军衔 rare a. 罕见的,稀有的 rat n. 老鼠 rate n./ v. 率,评…

<JavaEE> 了解网络层协议 -- IP协议

目录 初识IP协议 什么是IP协议? IP协议中的基础概念 IP协议格式 图示 4bit版本号(version) 4bit头部长度(headerlength) 8bit服务类型(TypeOfService) 16bit总长度(total l…

prompt,RAG,finetune,从零训练大模型对比

Prompt Engineering RAG 微调 从零训练大模型通过提供少量示例提供尽可能多的上下文,使基础模型更好地了解用例增加了直接来自向量化信息存储的特定于用例的上下文在特定领域的数据上更新模型权重模型是在用例特定数据上从零开始训练的准确性与其他方法相比&#xf…

24计算机考研调剂 | 太原科技大学【官方】

2024年太原科技大学 光学工程、光电信息工程专业接收研究生调剂 考研调剂招生信息 学校:太原科技大学 专业:083000(光电工程) 085408(光电信息工程) 调剂考生基本要求: 1.学硕:…

数据结构——循环链表,双向链表,线性表和有序表的合并详解

目录 1.循环链表 1.带尾指针循环链表的合并 代码示例: 2.双向链表 代码示例: 1.双向链表的插入 ​代码示例: 2.双向链表的删除 代码示例: 3.单链表,循环链表,双向链表时间效率的比较 4.顺序表和链…

JVM基础篇

什么是JVM java虚拟机 JVM的功能 1.解释和运行 对字节码文件中的指令,实时的解释成机器码,让计算机执行 2.内存管理 自动为对象、方法等分配内存 自动的垃圾回收机制,回收不再使用的对象(c不会自动回收,相当于降…

vue-cli-浏览器实现热更新

最常用的是webpack-dev-server,它是一个小型的Node.js Express服务器,它使用webpack-dev-middleware来服务于webpack的包。当文件变动时,它会通知浏览器自动刷新。 使用步骤: 安装 webpack 和 webpack-cli npm install --regist…

腾讯云轻量服务器地域选择教程以及不同地域的区别

腾讯云服务器地域怎么选择?不同地域之间有什么区别?腾讯云哪个地域好?地域选择遵循就近原则,访客距离地域越近网络延迟越低,速度越快。腾讯云百科txybk.com告诉大家关于地域的选择还有很多因素,地域节点选择…

net/http 框架源码解读

一、Hello World 使用net/http编写一个简单的web服务器, 定义了一个UserHandler的处理函数,通过HandleFunc来将路由和handler进行绑定,最后通过ListenAndServe启动web服务,后面我将handler统称为视图函数 package mainimport "net/htt…

PGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发,提供3套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI接收OSD动态字符叠加输出应用本方案的SDI接收HLS多路视频融…

什么是RPC?RPC 和 HTTP 对比?RPC有什么缺点?市面上常用的RPC框架?

什么是RPC? RPC(Remote Procedure Call)是一种用于实现不同计算机间程序之间通信的协议,主要用于分布式系统中。它允许程序员编写客户端和服务器端代码,就像它们位于同一台机器上一样,而不需要显式地处理网…

uniapp中人脸识别图片并圈起人脸

效果如上,我用的是阿里云的人脸识别。首先,我们先封装一个阿里云的请求js文件 faceRecognition.js import CryptoJS from crypto-js//SignatureNonce随机数字 function signNRandom() {const Rand Math.random()const mineId Math.round(Rand * 1000…

C++ 多路音频pcm混音算法

1、均值化混音算法 不适合商用,声音的损失比较大,不建议用,建议用第二种声音混音 short remix(short pcm1,short pcm2){ int value pcm1 pcm2; return (short)(value/2) } 2、归一化混音算法 输入数据为48Khz-2-16bit音频数据 方法&#…

R语言lavaan结构方程模型(SEM)实践技术应用

基于R语言lavaan程序包,通过理论讲解和实际操作相结合的方式,由浅入深地系统介绍结构方程模型的建立、拟合、评估、筛选和结果展示的全过程。我们筛选大量经典案例,这些案例来自Nature、Ecology、Ecological Applications、Journal of Ecolog…

MySQL 数据库 下载地址 国内阿里云站点

mysql安装包下载_开源镜像站-阿里云 以 MySQL 5.7 为例 mysql-MySQL-5.7安装包下载_开源镜像站-阿里云

C#,图论与图算法,输出无向图(Un-directed Graph)全部环(cycle)的算法与源代码

1 无向图(Un-directed Graph)全部环 图算法中需要求解全部的环。 2 方法 使用图着色方法,用唯一的数字标记不同循环的所有顶点。图形遍历完成后,将所有类似的标记数字推送到邻接列表,并相应地打印邻接列表。 3 算法 将边插入到邻接列表中。调用DFS函数,该函数使用着色方…

C# wpf 使用GDI实现截屏

wpf截屏系列 第一章 使用GDI实现截屏(本章) 第二章 使用GDI实现截屏 第三章 使用DockPanel制作截屏框 第四章 实现截屏框热键截屏 第五章 实现截屏框实时截屏 第六章 使用ffmpeg命令行实现录屏 文章目录 wpf截屏系列前言一、导入gdi32方法一、NuGet获取…

解决无法登录到 ArcGIS Server Administrator

目录 问题复现原因分析解决办法 问题复现 今天在访问arcgisserver后台准备设置arcgis api for js请求路径时,登录之后出现500错误。Services Directoryhttp://xxx.xxx.xxx.xxx:6080/arcgis/admin/system/handlers/rest/servicesdirectory 原因分析 我实在两台虚拟机…

蚓链助新零售企业快速实现数字化转型

2024年3月11日星期一,今天来自广州市开利网络科技有限公司交付部传来喜讯!帮助新零售企业可以快速实现数字化转型的蚓链数字化生态系统速效解决方案正式面世!该蚓链速效数字化方案从如何决策、如何执行、如何落地三个主要问题入手给予了明确的…