"""
括号匹配 输入: "()[]{}" 输出true
输入:"([)]" 输出false
输入:")(()))" 输出false
输入:"()" 输出true
输入:"((([])))" 输出true
输入:"]][[" 输出false
输入:([)] 输出false
""" def bracket_match_v1(brackets_str):
brackets_dict = {'(': ')', '[': ']', '{': '}'} # 右括号开头
if brackets_str[0] in brackets_dict.values():
return False # 左括号开头
brackets_stack = []
for bracket in brackets_str:
# 左括号进栈
if bracket in brackets_dict.keys():
brackets_stack.append(bracket) # 右括号 去匹配栈顶元素是否对应
elif bracket in brackets_dict.values():
if brackets_dict[brackets_stack.pop()] != bracket:
return False if not brackets_stack:
return True return False def bracket_match_v2(brackets_str):
"""简化版"""
brackets_dict = {')': '(', ']': '[', '}': '{'}
brackets_stack = []
for bracket in brackets_str:
# 左括号
if bracket in brackets_dict.values():
brackets_stack.append(bracket)
# 右括号, 包含右括号开头
elif not brackets_stack or brackets_dict[bracket] != brackets_stack.pop():
return False return not brackets_stack print(bracket_match_v1("()[]{}"))
print(bracket_match_v1("([)]"))
print(bracket_match_v1(")(()))"))
print(bracket_match_v1("()"))
print(bracket_match_v1("((([])))"))
print(bracket_match_v1("]][["))
print(bracket_match_v1("([)]")) print('-' * 66) print(bracket_match_v2("()[]{}"))
print(bracket_match_v2("([)]"))
print(bracket_match_v2(")(()))"))
print(bracket_match_v2("()"))
print(bracket_match_v2("((([])))"))
print(bracket_match_v2("]][["))
print(bracket_match_v2("([)]"))

python---括号匹配的更多相关文章

  1. 栈应用之 括号匹配问题(Python 版)

    栈应用之 括号匹配问题(Python 版) 检查括号是否闭合 循序扫描被检查正文(一个字符)里的一个个字符 检查中跳过无关字符(所有非括号字符都与当前处理无关) 遇到开括号将其压入栈 遇到闭括号时弹出 ...

  2. python实现括号匹配

    1.用一个栈[python中可以用List]就可以解决,时间和空间复杂度都是O(n) # -*- coding: utf8 -*- # 符号表 SYMBOLS = {'}': '{', ']': '[ ...

  3. python栈--字符串反转,括号匹配

    栈的实现: # 定义一个栈类 class Stack(): # 栈的初始化 def __init__(self): self.items = [] # 判断栈是否为空,为空返回True def isE ...

  4. Python凯撒密码和括号匹配

    1.凯撒密码: 除了特殊字符不转化,其余的按照规定经行转译,以下以a~z和A~Z的字符都进行转译. plaincode = input("")print(len(plaincode ...

  5. Python面试题:使用栈处理括号匹配问题

    括号匹配是栈应用的一个经典问题, 题目 判断一个文本中的括号是否闭合, 如: text = "({[({{abc}})][{1}]})2([]){({[]})}[]", 判断所有括 ...

  6. 利用栈实现括号匹配(python语言)

    原理: 右括号总是与最近的左括号匹配 --- 栈的后进先出 从左往右遍历字符串,遇到左括号就入栈,遇到右括号时,就出栈一个元素与其配对 当栈为空时,遇到右括号,则此右括号无与之匹配的左括号 当最终右括 ...

  7. 括号匹配 区间DP (经典)

    描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来 ...

  8. YTU 3003: 括号匹配(栈和队列)

    3003: 括号匹配(栈和队列) 时间限制: 1 Sec  内存限制: 128 MB 提交: 2  解决: 2 [提交][状态][讨论版] 题目描述 假设一个表达式中只允许包含三种括号:圆括号&quo ...

  9. [原]NYOJ 括号匹配系列2,5

    本文出自:http://blog.csdn.net/svitter 括号匹配一:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号匹配二:htt ...

  10. POJ C程序设计进阶 编程题#4:括号匹配问题

    编程题#4:扩号匹配问题 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在某 ...

随机推荐

  1. zabbix5.0监控mysql

    最近开发让对mysql数据库进行监控,由于公司的开发大部分都是以WINDOWS环境下运行的,只有少部分是在LINUX下.我自己先在linux做了一个测试.按照网上教程折腾了三天.最后看着官方教程很轻松 ...

  2. Java学习笔记:01面向对象-继承

    01面向对象-继承 一.java中的数据类型 1.基本数据类型:四类 八种 byte(1) boolean(1) short(2) char(2) int(4) float(4) long(8) do ...

  3. CF回顾《二分类》

    cf Educational Codeforces Round 115 (Rated for Div. 2) C题 类型:二分查找. 中文题目: C.删除两项内容 Monocarp有一个由n个整数组成 ...

  4. mongoDb入门并整合springboot

    镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 MongoDb简介 MongoDb是一种非关系型数据库,是现在非常火热的noSQL.也被称为文档性数据库.(可存放json,xml等格式) mo ...

  5. Python 远程开发环境部署与调试

    一.下载相应开发工具 Pycharm :下载地址  二.部署开发机 一般在工作过程中,开发环境并不是本地环境,而是指在开发机:因为,有很多依赖本地部署非常麻烦,而开发机中则内置了很多相关的服务 三.代 ...

  6. 基于MRS-ClickHouse构建用户画像系统方案介绍

    业务场景 用户画像是对用户信息的标签化.用户画像系统通过对收集的各维度数据,进行深度的分析和挖掘,给不同的用户打上不同的标签,从而刻画出客户的全貌.通过用户画像系统,可以对各个用户进行精准定位,从而将 ...

  7. HTTP1.0和HTTP1.1和HTTP2.0的区别

    1 HTTP1.0和HTTP1.1的区别1.1 长连接(Persistent Connection)       HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求 ...

  8. Java IO流处理

    字节流是由字节组成的;字符流是由字符组成的Java里字符由两个字节组成. 1字符=2字节JAVA中的字节流是采用ASCII编码的,字符流是采用好似UTF编码,支持中文的 Java IO流处理 面试题汇 ...

  9. Jquery是什么?有什么作用?

    Jquery是继prototype之后又一个优秀的Javascrīpt框架.它是轻量级的js库(压缩后只有21k) ,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safar ...

  10. OpenSSL实现了5种信息摘要算法有哪些?

    OpenSSL实现了5种信息摘要算法,分别是MD2.MD5.MDC2.SHA(SHA1)和RIPEMD.SHA算法事实上包括了SHA和SHA1两种信息摘要算法.此外,OpenSSL还实现了DSS标准中 ...