基于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中利用函数装饰器实现备忘功能
Mar 30 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
Python单元测试框架unittest使用方法讲解
Apr 13 Python
Python实现删除列表中满足一定条件的元素示例
Jun 12 Python
利用Python破解斗地主残局详解
Jun 30 Python
selenium+python 对输入框的输入处理方法
Oct 11 Python
在Pandas中处理NaN值的方法
Jun 25 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
redis数据库及与python交互用法简单示例
Nov 01 Python
Python安装OpenCV的示例代码
Mar 05 Python
python中id函数运行方式
Jul 03 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常用函数的使用汇总
2013/06/08 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
JavaScript 常用函数
2009/12/30 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
JavaScript脚本库编写的方法
2015/12/09 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
Python入门篇之面向对象
2014/10/20 Python
Python编写Windows Service服务程序
2018/01/04 Python
python读取LMDB中图像的方法
2018/07/02 Python
Python日志模块logging基本用法分析
2018/08/23 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
师范教师毕业鉴定
2014/01/13 职场文书
《美丽的小路》教学反思
2014/02/26 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js