python实现有效的括号判断实例代码
作者:修炼之路 发布时间:2023-11-24 14:40:34
标签:python,判断,括号
题目描述
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
LeetCode原题地址:https://leetcode-cn.com/problems/valid-parentheses/
测试用例
示例 1
输入:s = “()”
输出:true
示例 2
输入:s = “()[]{}”
输出:true
示例 3
输入:s = “(]”
输出:false
示例 4
输入:s = “([)]”
输出:false
示例 5
输入:s = “{[]}”
输出:true
代码实现
实现这个算法我们可以利用栈的先进后出的特性,对于每个括号它需要找到与它匹配的括号。
我们先遍历字符串,将字符串的字符存入到栈中,当匹配到结束的括号时,如果此时栈不为空并且栈顶的字符与当前的括号相匹配时,我们将栈顶的字符进行出栈操作,否则直接返回False。如果最终栈为空表示每个括号都找到了匹配的结束括号,否则匹配失败。
class Solution:
def isValid(self, s: str) -> bool:
#如果字符串是奇数一定不满足条件
if len(s) % 2 != 0:
return False
#定义一个括号字典
bracket_dict = {")":"(","]":"[","}":"{"}
#定义一个栈
stack = []
for c in s:
#当匹配到括号的结束符时
if c in bracket_dict:
#栈不能为空,并且栈顶要与结束的括号匹配
if len(stack) > 0 and bracket_dict[c] == stack[-1]:
stack.pop()
else:
return False
else:
stack.append(c)
return not stack
s = Solution()
print(s.isValid("()[]{}"))
print(s.isValid("([)]"))
参考:LeetCode详解
来源:https://blog.csdn.net/sinat_29957455/article/details/113193617


猜你喜欢
- configparser中默认值的设定在做某一个项目时,在读配置文件中,当出现配置文件中没有对应项目时,如果要设置默认值,以前的做法是如下的
- 本文实例为大家分享了python半自动化发送微信信息的具体代码,供大家参考,具体内容如下相关第三方库1.pyautogui自动操作鼠标、键盘
- 首先确保装了Python,我装的是2.x版本,对了,我的操作系统是WIN7,其实对于Python来说,什么操作系统并不重要。Python内置
- Vue 路由传参加密首先,创建一个base64.jsconst Base64 = { //加密 en
- Oracle shutdown的时候突然断电,导致使用sql/plus启动时无法连接到数据库,具体描述为:connection can no
- 安装源pip install django2.2pip install mysqlclient1.4.6使用pyharm 创建django
- 写在前面其实我之前写过一个简单的识别手写数字的程序,但是因为逻辑比较简单,而且要求比较严苛,是在50x50大小像素的白底图上手写黑色数字,并
- 禁用admin中models的编辑链接和添加删除按钮方法如下:class MyModelAdmin(models.ModelAdmin):
- UDP 套接字是可以使用 connect 系统调用连接到指定的地址的。从此以后,这个套接字只会接收来自这个地址的数据,而且可以使用 send
- 直线检测原理核心要点:图像坐标空间、参数空间、极坐标参数空间 -> (极坐标)参数空间表决给定一个点,我们一般会写成y=ax+b的形式
- 本文为大家分享了python搭建服务器实现两个Android客户端间收发消息,供大家参考,具体内容如下python服务器# coding:u
- 网络训练中,loss曲线非常奇怪交叉熵怎么会有负数。经过排查,交叉熵不是有个负对数吗,当网络输出的概率是0-1时,正数。可当网络输出大于1的
- 本文实例讲述了Python实现的多项式拟合功能。分享给大家供大家参考,具体如下:# -*- coding: utf-8 -*-#! pyth
- vue3给数组赋值丢失响应式的解决由于vue3使用proxy,对于对象和数组都不能直接整个赋值。只有push或者根据索引遍历赋值才可以保留r
- 目标:在64位linux系统上编译出32位程序。操作:1.执行 go env 查看当前go环境配置2.执行 export GOARCH=38
- 本文实例讲述了python切片的步进、添加、连接简单操作。分享给大家供大家参考,具体如下:步进切片:#coding:utf-8a="
- 产生原因:先说一下Git和SVN的区别吧,有助于更好的理解这个问题。SVN从服务器上update文件时,如果文件有冲突,SVN会自动帮你me
- 在前面已经学习了gin框架如何处理请求,解析请求,返回数据。在实际的项目当中,项目往往是以模块化来进行划分和开发的,所谓的模块化就是按照功能
- javascript 数组Array(list)添加/删除unshift:将参数添加到原数组开头,并返回数组的长度pop:删除原数组最后一项
- pip是Python包管理工具,该工具提供了对Python包的查找、下载、安装、卸载的功能。使用pip安装插件sudo pip3&