主要的思路:

首先设置两个列表分别存放的是各种括号的开括号和闭括号,然后遍历给定的字符串,分如下几种情况:

1.字符串首字符出现在闭括号列表中,直接结束,输出错误

2.字符串长度不为偶数,直接结束,输出错误

3.对原始字符串列表化去重,如果去重后的列表长度不为偶数直接结束,输出错误

4,遍历字符串,将属于开括号集合的括号加入到列表中,当遇上一个闭括号的时候计算该闭括号在闭括号列表中的索引与当前列表最后一个开括号在开括号列表中的索引是否一致,一致则继续,否则直接结束,输出错误

主要是在长度很大的时候可以尽快判断一些比较明显的错误的模式,节省时间

#!usr/bin/env python

# encoding:utf-8

def bracket_mathch(one_str):

'''''

括号匹配

'''

tmp_list = []

open_bracket_list = ['(', '[', '{', '<', '《']

close_bracket_list = [')', ']', '}', '>', '》']

one_str_list = list(one_str)

length = len(one_str_list)

set_list = list(set(one_str_list))

num_list = [one_str_list.count(one) for one in set_list]

if one_str[0] in close_bracket_list:

return False

elif length % 2 != 0:

return False

elif len(set_list) % 2 != 0:

return False

else:

for i in range(length):

if one_str[i] in open_bracket_list:

tmp_list.append(one_str[i])

elif one_str[i] in close_bracket_list:

if close_bracket_list.index(one_str[i]) == open_bracket_list.index(tmp_list[-1]):

tmp_list.pop()

else:

return False

break

return True

if __name__ == '__main__':

one_str_list = ['({})', '({[<《》>]})', '[(]){}', '{{{{{{', '([{}])', '}{[()]']

for one_str in one_str_list:

if bracket_mathch(one_str):

print(one_str, '正确')

else:

print(one_str, '错误')

tmp = '{}[{()()[]<{{[[[[(())()()(){}[]{}[]()<>]]]]}}>}]'

print(bracket_mathch(tmp))

python实现括号匹配_python实现括号匹配相关推荐

  1. python实现括号匹配算法_Python实现括号匹配方法详解

    这篇文章主要简介了python实现括号匹配方法详解,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 1.用一个栈[python中可以用List]就可 ...

  2. python 字符匹配_python 中如何匹配字符串

    python 中如何匹配字符串? 1. re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none.import re line="th ...

  3. python正则匹配_Python正则表达式只匹配一次

    我正在尝试创建一个简单的降价乳胶转换器,只是为了学习 python和基本的正则表达式,但我不知道试图弄清楚为什么下面的代码不起作用: re.sub (r'\[\*\](.*?)\[\*\]: ?(.* ...

  4. python贪婪匹配_python re模块匹配贪婪和非贪婪模式详解

    python re模块匹配贪婪和非贪婪模式详解 这篇文章主要介绍了python re模块匹配贪婪和非贪婪模式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友 ...

  5. python完全匹配_python如何精确匹配

    各位大虾好! 小弟有一个文件里面是这个样子:data_center = { access_key = { ak = "this is ak", sk = "this is ...

  6. python实现括号匹配代码_python实现括号匹配的思路详解

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

  7. python中用函数设计栈的括号匹配问题_数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题...

    算法 数据结构 数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题 在平时写程序当中,我们会经常遇到程序当中括号的匹配问题,也就是在程序当中左括号的数量和右括号的数量必须相等.如 ...

  8. 第11.16节 Python正则元字符“()”(小括号)与组(group)匹配模式

    一. 什么是组 关于组匹配模式,Python官网上说得比较简单,也没有这个名词,只有组这个名词,老猿查了比较多的资料和做了相关测试之后才理解. 组匹配模式,就是在匹配的正则表达式中使用小括号" ...

  9. python正则匹配_Python正则表达式初识(五)

    原标题:Python正则表达式初识(五) 正则表达式的内容很丰富,今天小编继续给大家分享Python正则表达式的基础知识.今天要给大家的讲的特殊字符是竖线"|".竖线"| ...

最新文章

  1. 设计模式之_动态代理_06
  2. java web 通过servlet访问web_inf jsp跳转_WEB-INF下的jsp通过servlet中超链接跳转
  3. matlab编译器安装在哪里,MATLAB的m文件编辑器在哪里?
  4. 动软.Net代码自动生成器下载
  5. 图像读取函数cv::imread()的几种使用方式
  6. UGUI小技巧之Text随文本内容自动变化大小
  7. 蓝桥杯题目练习(摆动序列)
  8. Vue 当一个页面上,需要编辑,审核,查看详情的时候,隐藏和展示
  9. 安全性、活跃性以及性能问题
  10. 360在网站安全防护中的实践
  11. 帮转|腾讯云市场新版上线:大不同
  12. 还在手写CURD代码?这三件套任意一套都能免去手写CURD确定不来看看?——JPA+MP+TK 免手写CURD三件套
  13. 超实用:关于Java异常设计和处理
  14. sql---多表联查
  15. java 百度贴吧 爬虫,爬取百度贴吧帖子
  16. 百度百科创建词条步骤是怎样的?
  17. django中如何用es_用Django轻松搜索ElasticSearch
  18. 龙之谷冰龙linux手工服务端,【龙之谷手游服务端】3D手游冰龙商业版VM虚拟机一键安装即玩游戏客户端...
  19. 随机取26个字母中的一个
  20. 炮轰IEO、点赞孙宇晨,V神携团队24大要点解锁以太坊困境

热门文章

  1. 蓝桥杯合数求和题解C++
  2. NENU - 字符串处理课后作业(问题A~问题H) 解析+参考代码(含有C++中的string函数库)
  3. mysql计划性任务每一小时_mysql 计划任务施行
  4. Dubins曲线学习笔记及相关思考
  5. opencv python 识别视频水印_opencv+python实现视频实时质心读取
  6. 物联网设备将成为网络犯罪分子在2017年的主要目标
  7. 【Maven】Maven安装入门教程笔记
  8. 巴菲特思维实验:给你100万美元,你愿意在脑袋上开一枪吗?
  9. 2019江苏省计算机一级准考证打印,江苏2019年计算机等级准考证打印时间丨入口...
  10. HTML中h标签和p标签,HTML 中 br 和 p 标签的区别是什么?