基于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挑选文件夹里宽大于300图片的方法
Mar 05 Python
Python求导数的方法
May 09 Python
Python基于opencv的图像压缩算法实例分析
May 03 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
Django实现学员管理系统
Feb 26 Python
Python字符串的常见操作实例小结
Apr 08 Python
python使用 __init__初始化操作简单示例
Sep 26 Python
Django密码存储策略分析
Jan 09 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
Python利用FlashText算法实现替换字符串
Mar 31 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 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实现MySQL更新记录的代码
2008/06/07 PHP
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
PHP反射实际应用示例
2019/04/03 PHP
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
python文件比较示例分享
2014/01/10 Python
python多进程实现进程间通信实例
2017/11/24 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
python asyncio 协程库的使用
2021/01/21 Python
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
公司年会策划方案
2014/05/17 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
教学质量月活动总结
2015/05/11 职场文书
2016年教师党员承诺书范文
2016/03/24 职场文书