python数据结构——栈的应用之匹配括号

[数据结构] python 栈的应用:括号匹配问题 括号匹配问题:给一个字符串,其中包含小括号、中括号、大括号,求该字符串中的括号是否匹配。 例如: ()()[]{} 匹配 ([{()}]) 匹配 []( 不匹配 [(]) 不匹配 算法思想:左括号进栈。右括号不进栈,就看看栈顶有没有自己的对象,没有就不匹配。 比如有一堆括号{[}],按照栈的顺序,先进后出出入栈。 1.{说:“我入栈了,我的期待的对象是 }” 2.[说 “我入栈了,我期待的对象是]” 3.到了 } 时 就看看栈... 阅读详情

栈的应用之匹配括号

要求:从左到右读取一个括号串,然后判断其中的括号是否匹配。

分析:每一个左括号都必须有与之对应的右括号,并且括号对有正确的嵌套关系。我们可以发现:最右边的左括号必须与接下来遇到的第一个右括号相匹配。第一个位置的左括号可能要等到处理最后一个位置的右括号时才能进行匹配。相匹配的右括号与左括号出现的顺序相反。(反转特性是栈的一个重要特点)

操作:由一个空栈开始,遇到一个左括号就添加到栈中,以此表示之后需要有一个与之匹配的右括号。若果遇到右括号,则删除一个左括号。只要栈中所有左括号都能遇到与之匹配的右括号,那么就是匹配的。

代码如下

from pythonds.basic import Stack
def parchecker(symbolstring):
    s=Stack()
    balanced=True
    index=0
    while index<len(symbolstring) and balanced:     #遍历你的输入
        symbol=symbolstring[index]
        if symbol =="(":
            s.push(symbol)                          #如果是左括号就把他添加到栈里面
        else:                                       #若果是右括号
            if s.isEmpty():
                balanced=False                      #如果栈是空的,则无法匹配直接Flase,这样第一次遇见“)”就是不对
            else:
                s.pop()                             #栈不是空的,就删除顶部元素,这样一对括号就对应了
        index =index+1                              #通过加一遍历你的每个输入
    if balanced and s.isEmpty():                    #当while循环完的时候,如果balanced=True并且栈
    #是空的,那么就对了,显然第一个若果是右括号就不对
        return True
    else:
        return False
print(parchecker("((((())))))()"))

代码有详细的解释。

如果内容对你有帮助就点个👍呗!!
关注我,领略更多数据结构方面的知识!!!

数据结构之栈(栈的实现与栈典型算法应用) 栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈是一种线性数据结构,栈主要由两个指针组成,一部分叫做栈底,主要用来确定咱们栈的起始位置,对栈底来说,并不能操作数据。另一部分叫做栈顶,主要用于操作数据,像咱们栈的新增和删除都是在栈顶完成的。而对栈的新增操作,我们叫作入栈,而对栈的删除操作,我们叫作出栈或者弹栈。相比于数组,栈对应的操作是数组的子集。 阅读详情

相关推荐

别再羡慕专业版!用这个批处理脚本,一键给Win11家庭版装上官方沙盒

本文详细介绍了如何通过批处理脚本在Windows 11家庭版上安装官方Windows沙盒(Windows Sandbox),无需复杂操作即可享受专业版功能。脚本自动激活系统内置组件,提供安全隔离的虚拟化环境,适用于软件测试、安全浏览等场景。

weixin_26757925的博客 490

栈的的链表实现

栈的链表实现 栈的链式实现可采用与改进的线性表一样有两个指针。分别指向栈底 头节点base和栈顶top节点。保留栈内元素个数变量length。使用常规链接 方法建立的链表,在压栈操作时是O(1)速度,但是弹栈操作要 找到top的前驱节点,所以速度是O(n),为了加快弹栈速度可以采用,下图 右边所示存储方案,可以把链表反向链接,这样就可以提高弹栈的速度 了,并且其他性能不变。 栈应用实例 进制转换 进制转换是计算机中常用的一种操作,如果将10进制数转换为N进制 的数(保证N小于10)我们常采用除N取余法

serase的博客 392

如何在 VMware Workstation 虚拟机中利用 Nvidia 显卡的硬件加速功能

本文详细介绍了在VMware Workstation虚拟机中配置Nvidia显卡硬件加速的完整流程。重点包括:检查硬件兼容性、安装显卡驱动、编辑VMware配置文件启用PCI直通功能(需修改config.ini文件参数)、为虚拟机分配PCI设备等关键步骤。文章特别强调了配置注意事项,如系统资源需求、BIOS设置要求、驱动兼容性等问题,并建议操作前备份数据。通过此方法可实现虚拟机对Nvidia显卡的直接调用,适用于需要GPU加速的计算场景。

qq_39777550的博客 6698

数据结构学习心得系列(二)

本博文意在巩固基础知识,高手请绕过。部分代码和内容参考严蔚敏人民邮电版出版社《数据结构》 栈和队列   栈:限定仅在一端进行插入或删除操作的线性表   栈顶(Top):允许进行插入、删除操作的一端,又称为表尾。   栈底(Bottom):是固定端,又称为表头。   空栈:当表中没有元素时称为空栈。 在栈中最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的...

weixin_33695450的博客 164

遥感图像小白--2--图像分割

遥感图像分割基础入门

Mary的博客 4233

保姆级教程:2026版Windows电脑换新,微信QQ聊天记录无损搬家(附路径修改避坑指南)

本文提供2026版Windows电脑换新时微信QQ聊天记录无损迁移的保姆级教程,涵盖最新版微信/QQ的存储路径修改和避坑指南。通过详细步骤和实战技巧,确保数据迁移过程中不丢失任何珍贵对话记录和文件,特别适合需要保留完整聊天记录的用户。

weixin_42629815的博客 2477

python:栈的理解与应用

如何理解“栈”? 关于“栈”,我有一个非常贴切的例子,就是一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也是从上往下一个一个地依次取,不能从中间任意抽出。后进者先出,先进者后出,这就是典型的“栈”结构。 从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。 我第一次接触这种数据结构的时候,就对它存在的意义产生了很大的疑惑。因为我觉得,相比数组和链表,栈带给我的只有限制,并没有任何优势。那我直接使用数组或者链表不就好了吗?为什..

黑马程序员官方博客 534

2025年微信小程序获取手机号授权登录注册详细教程(含服务端)。不弹窗原因以及减少组件用量的方法

前端把获取到的code传给后端,后端获取access_token和前端传过来的code,请求服务器接口,即可获取到手机号。

coderYYY的博客 3万+

【python数据结构】栈的应用:括号匹配

本程序是MOOC学习北京大学陈斌老师课程后,自行改进编写。欢迎大家交流探讨,不断学习进步 程序流程: 括号匹配算法: 1.输入括号表达式 2.如果是左括号的话入栈 3.如果遇到右括号,但是没有左括号与其匹配(栈为空),则括号不匹配 4.如果遇到了右括号且栈不为空,判断右括号和左括号的类型是否一致(比如中括号"[“与”]“匹配,”[“与”)"不匹配),不一致则括号不匹配 5.如果遇到其他字符,就不予处理 6.当括号表达式字符循环结束,栈是空的,则括号匹配;如果栈是非空的,则括号不匹配 源程序. from Te

sailys的博客 1204

PHPStorm携手ThinkPHP8:开启高效开发之旅

本文围绕使用 PHPStorm 进行 ThinkPHP8 开发展开,先介绍开发环境搭建与 Xdebug 配置,再阐述 PHPStorm 集成 ThinkPHP8 的步骤,包括项目导入、解释器和服务器配置。还讲解了项目开发基础、数据库操作、高级技巧、调试处理及部署上线等内容,为开发者提供了从环境搭建到项目上线的完整指引,助力高效开展 ThinkPHP8 开发工作。

邓邓子的博客 1544

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

kngines 1834

Python数据结构与算法—栈—队列—双向队列—栈与队列的应用—括号匹配问题—迷宫问题

数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中 程序 = 数据结构+算法 百度百科定义 数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。简而言之,数据结构是相互之间存在一种或多种特定关系的数.

m0_57053326的博客 711

uniapp - 解决报错 TypeError: e[t] is not a function(Uniapp项目运行或打包编译时提示错误e[t] is not a function,全平台端均可搞定)

uniapp,报错,TypeError: e[t] is not a function,uniapp App端报错,Android端,苹果ios打包报错,运行报错,uniapp打包报错e[t] is not a function,无法运行提示错误,uniapp live-pusher直播推流,maps地图组件,uni-app live-pusher 报错TypeError: e[t] is not a function,uni-app maps报错TypeError: e[t] is not a funct

✅ 精选推荐文章 8221

数据结构与算法(Python版)七:栈的应用(简单括号匹配)

下面看看如何构造括号匹配识别算法 从左到右扫描括号串,最新打开的左括号,应该匹配最先遇到的右括号这样,第一个左括号(最早打开),就应该匹配最后一个右括号(最后遇到)这种次序反转的识别,正好符合栈的特性! def parCheck(symbolString): s = Stack() balanced = True index = 0 while index < len(symbolString) and balanced: symbol = symb

神薯片 792

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python 栈_Python数据结构与算法05:基本结构:栈的应用之括号匹配

注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性。本文阅读时间约为7分钟。算法流程括号匹配情况介绍我们经常会遇到类似(9-1)*(8+7)/(4-2)、print("Go on!")这样含有括号的例子。在代码中,还有大量类似包含多重括号的例子,如:l = list(map(int,input().split()))括号的使用有其固定的规则:首先,每个开括号必然由于与之对应...

weixin_39524425的博客 143

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

栈的应用括号匹配python_数据结构与算法(5):栈

(文中图片出自王争老师的课程:数据结构与算法之美,侵删) 栈是一种后进者先出,先进者后出的线性表结构。从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。 从功能上来说,数组或链表可以替代栈,但特定的数据结构是对特定场景的抽象,而且,数组或链表暴露了太多的操作接口,操作上的确灵活自由,但使用时就比较不可控,自然也就更容易出错。当某个数据集...

weixin_39575648的博客 294

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

数据结构与算法专题汇总(六)栈,python实现栈,栈的应用和代码实现:函数调用,表达式求值,括号匹配,浏览器前进与后退

1.栈 操作受限的线性表,只能在一端插入和删除数据。 数组实现栈:顺序栈 链表实现栈:链式栈 #python实现顺序栈 class ArrayStack: def __init__(self,n): self.stack = [] self.limit = n self.count = 0 def push(self,item): if self.count == self.limit: return

April_er的博客 508

栈的应用括号匹配python_python数据结构与算法基础#1 stack

这个系列就是写给自己看看,看看自己能坚持多久,并且把今天的学习内容复习一下stack:堆栈(英语:stack)又称为栈或堆叠,是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为堆栈顶端,英语:top)进行加入数据(英语:push)和移除数据(英语:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作。[1]关于stack在python中...

weixin_39593498的博客 129

数据结构与算法(Python版)—栈的应用—括号匹配

数据结构与算法(Python版) 栈的应用 1. 简单括号匹配 每个开括号都要恰好对应一个闭括号,对括号是否正确匹配的识别,是很多语言编译器的基础算法。 from pythonds.basic.stack import Stack def parChecker(parStr): s = Stack() for i in range(len(parStr)): if parStr[i] == '(': s.push(parStr[i])

cc_152的博客 584

python栈的实现与应用-1.括号匹配

Python 栈 ,栈是含有一组对象的容器,支持快速 后进先出 (LIFO)的插入和删除操作。与列表或数组不同,栈通常不允许随机访问所包含的对象。插入和删除操作通常称为 入栈 (push)和 出栈 (pop)。现实世界中与栈数据结构相似的是一叠盘子。

m0_74394437的博客 292

数据结构与算法:栈和队列的应用详解

栈和队列的核心在于操作规则的约束,它们在编程中具有广泛的应用。初学者可以从简单的例子入手,练习基础操作和经典问题,并逐步扩展到实际场景中。理解并熟练运用这两种数据结构,将为后续算法学习打下坚实的基础。希望这篇文章能够帮助你更好地理解栈和队列!如果有任何疑问或希望补充的内容,请随时留言讨论!

B5201234的博客 891

2.2.1 python数据结构之栈——应用(1)括号匹配及后缀表达式

     在学习了栈和队列的基本实现后,我们依次学习二者在实际问题中的应用。都是最典型的应用,基本以LeetCode的题目为例。由于栈的后进先出的特点,栈的应用主要有括号匹配、后缀表达式计算、数制转换等。 应用1:括号匹配 LeetCode 20. Valid Parentheses(有效的括号) Given a string containing just the characters '...

xutiantian1412的博客 971

Day028: 栈:后进先出的数据结构

​在计算机科学中,栈(Stack)是一种重要的数据结构,它遵循后进先出(Last In First Out,LIFO)的原则。栈可以用于解决许多实际问题,如表达式求值、括号匹配、函数调用等。本文将详细介绍栈的定义、基本操作、应用场景以及在 Python 中的实现方法。

u014481728的博客 1411

括号配对用栈实现c语言_栈应用之括号匹配问题

问题描述括号匹配问题,即给定一段文本text,括号是否有正确匹配的问题。括号由一个开括号如"("和一个闭括号")"组成,相互对应。这里只考虑三种括号,即"()","[]","{}"。此外括号括起的片段,也可能会嵌套。解决思路这样就不难总结出检查括号配对的原则:从左到右遍历text时,遇到的闭括号应该与最近遇到的且尚未匹配的开括号配对。由于括号的出现可能嵌套,需要逐对匹配,即当前闭括号应该与前面最近...

weixin_39636253的博客 261

数据结构与算法(栈及利用栈实现简单括号匹配)

栈:一种有次序的数据项集合,在栈中,数据项的加入和移除 都仅发生在同一端,距离栈底越近的数据项,留在栈中的时间 就越长。这种次序通常称为“后进先出LIFO”: Last in First out 利用栈实现简单括号匹配 利用python实现栈 括号匹配代码: from pythonds.basic.stack import Stack def parChecker(symbolString): s = Stack() for symbol in symbolString: if symbol

多思考🤔~ 783

Python数据结构 之 堆栈(Stack)

python使用堆栈,判断一个字符串(字符串中只包含‘{’,‘}’,‘(’,‘)’,‘[’,‘]’)中的括号是否匹配,例如‘{【】}’就是匹配的,‘}}【】)’就是不匹配的,再例如‘{(}’也是不匹配的。(LIFO, Last In First Out)的线性数据结构,可以类比为一个网球罐子,最后放进去的网球,会被最先取出来。前进后退功能通过两个堆栈实现(一个保存历史,一个保存“后退后”的页面)只能在一端(称为“栈顶”)进行插入(压栈)和删除(出栈)操作。检查代码中的括号是否成对(如 {[()]})。

weixin_50877427的博客 878
上一篇: python网络爬虫之selenium准备工作
下一篇: python数据结构——栈的应用之匹配符号
Xcodd
博客等级 码龄6年 36粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值