基于python判断字符串括号是否闭合{}[]()


Posted in Python onSeptember 21, 2020

前言

经典面试题: 判断一个字符串里面的括号是否闭合,如:{{()}} 就是一个闭合的字符串。

{{()}]} 这个里面 ([)] 括号不对称,这种就是不闭合。

python判断闭合

解决基本思路:

先把左括号添加到一个列表里面,遇到右括号就弹出列表里面的最后一个存放进去的。

对比右括号和弹出的左括号是否对称,如果是就继续依次对比。

最后判断列表里面是否有多余的左括号,如果列表为空,说明全部被弹出,那就是闭合的

最后考虑下左括号和右括号有多余的情况

代码如下

def is_str_close(a):
  '''
  遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
  寻找有志同道合的小伙伴,互帮互助,群 里还有不错的视频学习教程和PDF电子书!
  判断括号是否闭合
  '''
  b = []
  flag = True
  for i in a:
    if i == "{" or i == "[" or i == "(":
      # 左边的括号加进去
      b.append(i)
    elif i == "}":
      # 遇到右边括号}弹出最后面的一个{
      if len(b) == 0 or b.pop() != "{":
        return False
    elif i == "]":
      # 遇到右边括号]弹出最后面的一个[
      if len(b) == 0 or b.pop() != "[":
        return False
    elif i == ")":
      # 遇到右边括号)弹出最后面的一个(
      if len(b) == 0 or b.pop() != "(":
        return False
  # 判断最后列表b里面的左边括号是否全部被弹出
  if len(b) != 0:
    flag = False
  return flag

if __name__ == '__main__':
  a = "{[{()}]()}"
  print(is_str_close(a))
  b = "({[{()}]()}"
  print(is_str_close(b))
  c = "{[{()}]()}]"
  print(is_str_close(c))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python进行稳定可靠的文件操作详解
Dec 31 Python
Python开发WebService系列教程之REST,web.py,eurasia,Django
Jun 30 Python
Python实现把json格式转换成文本或sql文件
Jul 10 Python
使用Python来开发微信功能
Jun 13 Python
python 寻找list中最大元素对应的索引方法
Jun 28 Python
对python:print打印时加u的含义详解
Dec 15 Python
pyqt5 从本地选择图片 并显示在label上的实例
Jun 13 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
Jan 08 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
Mar 06 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
属性与 @property 方法让你的python更高效
Sep 21 #Python
Python如何在bool函数中取值
Sep 21 #Python
python 密码学示例——凯撒密码的实现
Sep 21 #Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 #Python
python中的垃圾回收(GC)机制
Sep 21 #Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 #Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 #Python
You might like
第十一节 重载 [11]
2006/10/09 PHP
一步一步学习PHP(6) 面向对象
2010/02/16 PHP
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
深入理解JS中的变量及作用域、undefined与null
2014/03/04 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
JQuery工具函数汇总
2015/06/15 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
Python简单遍历字典及删除元素的方法
2016/09/18 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
python批量生成条形码的示例
2020/10/10 Python
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
性能服装:HYLETE
2018/08/14 全球购物
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
遗嘱继承公证书
2014/04/09 职场文书
ktv好的活动方案
2014/08/17 职场文书
共青团员自我评价
2015/03/10 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
新郎婚礼致辞
2015/07/27 职场文书
安全教育培训制度
2015/08/06 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python