基于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实现爬虫下载漫画示例
Feb 16 Python
python进阶教程之文本文件的读取和写入
Aug 29 Python
Python中几种操作字符串的方法的介绍
Apr 09 Python
详解Python中的动态属性和特性
Apr 07 Python
Python实现简单http服务器
Apr 12 Python
python解析含有重复key的json方法
Jan 22 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
python 实现多维数组(array)排序
Feb 28 Python
python中format函数如何使用
Jun 22 Python
pycharm 快速解决python代码冲突的问题
Jan 15 Python
如何使用Python进行PDF图片识别OCR
Jan 22 Python
python三子棋游戏
May 04 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
PHP nl2br函数 将换行字符转成 <br>
2009/08/21 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
JS实现环形进度条(从0到100%)效果
2016/07/05 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
python进阶教程之词典、字典、dict
2014/08/29 Python
python交互式图形编程实例(三)
2017/11/17 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
Python中Selenium模块的使用详解
2020/10/09 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
类的返射机制中的包及核心类
2016/09/12 面试题
大学生涯自我鉴定
2014/01/16 职场文书
施工材料员岗位职责
2014/02/12 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
求职意向书范文
2014/04/01 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书