基于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 25 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
使用Python & Flask 实现RESTful Web API的实例
Sep 19 Python
python编辑用户登入界面的实现代码
Jul 16 Python
python学生信息管理系统(完整版)
Apr 05 Python
Python hashlib加密模块常用方法解析
Dec 18 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
Apr 20 Python
Python 列表推导式需要注意的地方
Oct 23 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 03 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 Python
Django+Nginx+uWSGI 定时任务的实现方法
Jan 22 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
phpmyadmin操作流程
2006/10/09 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
js跳转页面方法总结
2014/01/29 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
python实现通过shelve修改对象实例
2014/09/26 Python
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
python版本五子棋的实现代码
2018/12/11 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
运动员获奖感言
2014/08/15 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
保送生自荐信
2015/03/06 职场文书
教学质量月活动总结
2015/05/11 职场文书
2019开业庆典剪彩仪式主持词!
2019/07/22 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书