基于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实现一次创建多级目录的方法
May 15 Python
python利用datetime模块计算时间差
Aug 04 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
使用Python简单的实现树莓派的WEB控制
Feb 18 Python
matplotlib设置legend图例代码示例
Dec 19 Python
python+selenium识别验证码并登录的示例代码
Dec 21 Python
Sublime开发python程序的示例代码
Jan 24 Python
python删除服务器文件代码示例
Feb 09 Python
flask框架视图函数用法示例
Jul 19 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
python标准库OS模块函数列表与实例全解
Mar 10 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
thinkphp控制器调度使用示例
2014/02/24 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
php两种无限分类方法实例
2015/04/21 PHP
PHP 错误处理机制
2015/07/06 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
PDO::commit讲解
2019/01/27 PHP
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
vue 项目引入echarts 添加点击事件操作
2020/09/09 Javascript
Vue 修改网站图标的方法
2020/12/31 Vue.js
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
Python的高级Git库 Gittle
2014/09/22 Python
Python中isnumeric()方法的使用简介
2015/05/19 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
优秀员工评语
2014/02/10 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL