基于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中自定义函数的教程
Apr 27 Python
在Python的Django框架中加载模版的方法
Jul 16 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
使用Python编写基于DHT协议的BT资源爬虫
Mar 19 Python
python处理Excel xlrd的简单使用
Sep 12 Python
python基础练习之几个简单的游戏
Nov 10 Python
wxPython的安装与使用教程
Aug 31 Python
python实现集中式的病毒扫描功能详解
Jul 09 Python
python通过实例讲解反射机制
Oct 17 Python
pygame实现非图片按钮效果
Oct 29 Python
Tensorflow实现在训练好的模型上进行测试
Jan 20 Python
Python数据处理的三个实用技巧分享
Apr 01 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
wordpress之wp-settings.php
2007/08/17 PHP
PHP HTML代码串 截取实现代码
2009/06/29 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
javascript创建动态表单的方法
2015/07/25 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
微信小程序实现换肤功能
2018/03/14 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
公司司机岗位职责
2014/02/07 职场文书
新教师培训心得体会
2014/09/02 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
活动主持人开场白
2015/05/28 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书