思路
栈的练习题,栈:元素后进先出.每次只判断栈顶的元素和要进入栈的元素是否匹配,如果匹配,栈顶的元素pop出去,结束之后如果栈为空,说明每个括号都匹配过了,为ture,否则为false。
@TOC
题目
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: “()”
输出: true
示例 2:
输入: “()[]{}”
输出: true
示例 3:
输入: “(]”
输出: false
示例 4:
输入: “([)]”
输出: false
示例 5:
输入: “{[]}”
输出: true
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
思路
栈的练习题,栈:元素后进先出.每次只判断栈顶的元素和要进入栈的元素是否匹配,如果匹配,栈顶的元素pop出去,结束之后如果栈为空,说明每个括号都匹配过了,为ture,否则为false。
代码实现
1 | class Solution { |
过程中出现的问题
a.top()
该函数调用时,栈如果为空时会报错,
由于有先出现右括号的情况,所以判断
1 | if((s[i]==')'&&a.top()=='(')||(s[i]==']'&&a.top()=='[')||(s[i]=='}'&&a.top()=='{')) |
的时候会用到a.top()函数,如果第一个括号直接就是右括号,栈里面没有元素,就会导致这个问题。
所以在上面加一个
1 | if(a.empty()) |
可以解决这个问题。
相关链接
-------------本文结束感谢您的阅读-------------