题目描述
给定一个只包括(
,)
,{
,}
,[
,]
的字符串,判断字符串是否有效。
有效的字符串需要满足:
- 1.左括号必须使用相同类型的右括号进行闭合。
- 2.左括号必须以正确的顺序闭合。
注意空字符串可以被认为是有效的字符串。
示例1:
输入:"()"
输出:true
示例2:
输入:"()[]{}"
输出:true
示例3:
输入:"(]"
输出:false
示例4:
输入:"([)]"
输出:false
示例5:
输入:"{[]}"
输出:true
算法设计与分析:
- 左括号与右括号需要匹配才能成功,毫无疑问需要辅助空间,对于括号匹配的问题使用的数据结构就是栈结构,在Python里面可以使用列表结构来实现,提供两种实现的思路:
- 第一种伪代码如下:
- 1、直接匹配,在字典里面定义好匹配括号的对应关系以及初始化一个列表当做栈stack=[]
- 2、循环遍历传入的字符串,如果字符串s中单个字符c对应所有的左括号"([{",说明这个符号需要先入栈;否则如果stack中的值为空或者括号元素与栈中顶部元素不匹配,说明括号字符串s不是有效的字符串,返回false;否则,右括符与左括符匹配,就将stack中的栈顶元素弹出,循环继续,比较下一个括符元素
- 3、如果最终stack为空的列表,说明匹配成功,是有效的括符,返回true;若不为空则返回False。
- 第一种的思路代码实现如下所示: