您的位置 首页 > 数码极客

括号在字符串中如何存储

本文主要是解决括号匹配的问题。

整体实现思路:

借助Python 的List 来实现 ,因为列表的Append 方法相当于栈的Push 方法即栈的压入,列表的Pop 方法相当于栈的Pop 方法即弹出。


详细的思路:

首先,设置一个字典,用于存放我们要遍历的符号类型。

其次,是设置两个列表分别存放的是各种括号的开括号和闭括号,然后遍历给定的字符串,分如下几种情况:

  • 字符串为空时直接输出True
  • 字符串的符号不成对匹配时输出False
  • 字符串中的符号不是字典中的符号类型时,直接忽略
  • 遍历字符串,将正向的符号压入栈内,遍历到的字符如果是正向符号(正好是最近的一个符号时)的匹配内容就弹出栈


代码实现如下:

#定义要检查匹配的符号类型 brackets = {'}': '{', ']': '[', ')': '(', '>': '<'} #将符号的正反向进行分类 bracket_l, brackets_r = bracke(), bracke() #定义一个检查字符串的方法 def check(str1): alist = [] #定义一个空列表 for c in str1: if c in bracket_l: ali(c)#将左符号压入栈内 elif c in brackets_r:#右符号要么出栈,要么匹配失败,不做处理 if alist and alist[-1] == brackets[c]:#判断alist不会空且alist最后一个字符等于左符号对应的右符号时 ali() #就做出栈操作 else: return False return True #传入空的字符串直接返回true if __name__ == '__main__': print(check("6c[*]{7b +[(8e -s3) * (d4+t5)]}<<>>")) print(check("6c*{7b+ [8e- 9f]}<>")) print(check(""))


温馨提示:

在阅读本文前可以提前看一看 Python 之“栈为何物”,因为本文是在这篇文章的基础上进行的应用,这里面的实现逻辑非常有意思,同时也体现了算法的精妙之处,值得大家一探究竟。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“括号在字符串中如何存储”边界阅读