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)

目录
相关文章
|
6天前
|
缓存 Java Python
python-静态方法staticmethod、类方法classmethod、属性方法property_python staticmethod类内使用(1)
python-静态方法staticmethod、类方法classmethod、属性方法property_python staticmethod类内使用(1)
|
11天前
|
C++ 开发者 Python
实现Python日志点击跳转到代码位置的方法
本文介绍了如何在Python日志中实现点击跳转到代码位置的功能,以提升调试效率。通过结合`logging`模块的`findCaller()`方法记录代码位置信息,并使用支持点击跳转的日志查看工具(如VS Code、PyCharm),开发者可以从日志直接点击链接定位到出错代码,加快问题排查。
22 2
|
11天前
|
索引 Python
Python 中寻找列表最大值位置的方法
本文介绍了Python中找列表最大值及其位置的三种方法:1) 使用内置`max()`和`index()`函数;2) 通过循环遍历;3) 利用`enumerate()`函数和生成器表达式。每种方法均附有示例代码,其中`enumerate()`方法在保证效率的同时代码更简洁。
45 2
|
11天前
|
JSON 数据处理 数据格式
Python中批量提取[]括号内第一个元素的四种方法
Python中批量提取[]括号内第一个元素的四种方法
29 1
|
11天前
|
SQL 关系型数据库 数据库连接
使用 Python 访问数据库的基本方法
【5月更文挑战第12天】在Python中操作数据库涉及安装数据库驱动(如mysql-connector-python, psycopg2, pymongo)、连接数据库、执行查询/更新、处理结果集及关闭连接。使用ORM(如SQLAlchemy)可简化操作。通过上下文管理器(with语句)能更好地管理资源和错误。注意根据实际需求处理事务、错误和安全性,例如使用SSL连接。
31 2
|
6天前
|
数据采集 Python
2024年Python最新【Python基础教程】快速找到多个字典中的公共键(key)的方法,秋招面试问题
2024年Python最新【Python基础教程】快速找到多个字典中的公共键(key)的方法,秋招面试问题
2024年Python最新【Python基础教程】快速找到多个字典中的公共键(key)的方法,秋招面试问题
|
6天前
|
程序员 PHP Python
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php
|
6天前
|
算法 开发工具 Python
python排序的几种方法(3)
python排序的几种方法(3)
|
6天前
|
算法 程序员 Python
python排序的几种方法(1)
python排序的几种方法(1)
|
6天前
|
SQL 分布式计算 算法
python-静态方法staticmethod、类方法classmethod、属性方法property_python staticmethod类内使用
python-静态方法staticmethod、类方法classmethod、属性方法property_python staticmethod类内使用