您的位置 首页 > 数码极客

括号在字符串中如何存储

还记得有一次笔试题,有一道括号匹配的算法题,当时没有学习数据结构和算法,思路很模糊,后来了解一些数据结构之后就有思路了,今天将解法写出来。

问题描述:

给定一个字符串,里边可能包含“()”、"{}"、“[]”三种括号,请编写程序检查该字符串的括号是否成对出现。

输出:

true:代表括号成对出现并且嵌套正确,或字符串无括号字符。

false:未正确使用括号字符。

1、分析

如果了解数据结构,那么应该知道,简单的采用一个栈的特性,就能解决该问题,左括号栈顶字符必须和第一个入栈的右括号字符匹配。

栈介绍:栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。

栈的特性:后进先出(LIFO)

栈示意

下面用一幅流程图来说明程序运行步骤:

步骤流程图

2、代码实现

2.1 Python实现

使用list来代替栈实现相同的操作。声明了几个变量:

  • BRANKETS:由配对的括号组成的字典,注意使用右括号作为key,因为我们要判断的是右括号是否与左括号匹配,在字典中找出与key对应的value简单,要是找value对应的key要复杂一些。
  • BRACKETS_LEFT与BRACKETS_RIGHT分别存放左括号与右括号,用来判断字符属于哪个阵营。

Python实现

输出结果:

2.2 C++实现

C++中自带栈数据结构,需要包含头文件<stack\>。使用string类型的变量bracketLeft和bracketRight来存储左括号和右括号,判断右括号与左括号匹配的方法是:先在bracketRight找到该字符的索引,然后对比栈顶字符和bracketLeft相同索引处的字符是否匹配。

C++实现

输出结果:


本文通过栈数据结构实现了括号匹配的判断,希望读者通过本文加深对栈的理解,并记住思路,没准下次面试时就会碰到这道题。

责任编辑: 鲁达

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

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