Python|用“栈”的方法完成括号匹配

简介: Python|用“栈”的方法完成括号匹配

问题描述

使用“栈”的方法完成括号匹配(给定一个字符串,判断字符串里的括号是否有效。)

正确匹配情况:(1)[](){} ;(2)([{}])


解决方案

先遍历字符串把三对括号提出来,再利用‘栈’把左括号一个个的放入其中并且遍历到右括号立即进行匹配。匹配成功后删除‘栈’中的左括号并继续,匹配失败则返回‘False’.最后返回栈的长度,避免出现奇数个括号的错误。

注意:不可以把左括号全部放入一个‘栈’,右括号全部放入另一个‘栈’。然后进行匹配。

例如:“([{}])”和“([}{])”左右括号分别放入两个栈的情况都是“([{”和“}])”,但是前一个是正确的,后一个是错误的。

实现代码:

def zhan(s):

    #新建一个列表,存放括号,出掉非括号的字符

    q = []

    for i in s:

        if i == '(' or i == ')' or i == '[' or i == ']' or i == '{' or i == '}' :

            q.append(i) 

    #利用栈匹配括号

    l = []

    for i in q:

        if i == '(' or i == '[' or i == '{': l.append(i)

        elif i == ')' and l[-1] == '(': l.pop()

        elif i == ']' and l[-1] == '[': l.pop()

        elif i == '}' and l[-1] == '{': l.pop()

    return len(l) == 0


s = "题中字符串"

result = zhan(s)

print(result)

目录
相关文章
|
2天前
|
Python
探索Python中的魔法方法:打造你自己的自定义对象
【8月更文挑战第29天】在Python的世界里,魔法方法如同神秘的咒语,它们赋予了对象超常的能力。本文将带你一探究竟,学习如何通过魔法方法来定制你的对象行为,让你的代码更具魔力。
20 5
|
2天前
|
Python
python保存两位小数的几种方法,python2保留小数
python保存两位小数的几种方法,python2保留小数
16 2
|
6天前
|
数据挖掘 数据处理 数据格式
Python读取.nc文件的方法与技术详解
通过上述方法,用户可以根据需求选择合适的库来读取.nc文件,并根据实际情况进行必要的数据操作,这是科学数据处理和分析中的一个重要技能。
35 10
|
3天前
|
数据安全/隐私保护 Python Windows
三种方法,Python轻松提取PDF中全部图片
三种方法,Python轻松提取PDF中全部图片
|
3天前
|
存储 程序员 C++
python类及其方法
python类及其方法
|
2天前
|
Python
|
2天前
|
C++ Python
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
6 1
|
2天前
|
存储 编解码 API
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
10 1
|
2天前
|
Python
python的列表的remove()方法、判断if xxx in xx条件比较耗时问题
python的列表的remove()方法、判断if xxx in xx条件比较耗时问题
10 1
|
3天前
|
Python
python中set和frozenset方法和区别
python中set和frozenset方法和区别
下一篇
云函数