一、题目解析

对于这个字符串需要左右括号匹配,并且是以正确的顺序
二、算法原理
解法1.图+栈
解法2.用else if代替图+栈
正常做法:对于三种左括号直接进栈('(','[','{'进栈),然后判断与下一个括号是否匹配,匹配则出栈,不匹配则返回false。
改进:当遇到三种左括号时,可以进栈对应的右括号(')',']','}'进栈),然后判断与下一个括号是否相同,当栈为空或者栈顶元素括号不匹配时,返回false,然后出栈。
最后返回值为栈是否为空,为空则返回true,所有括号匹配完,反之为false。
思考过后可以自己实现一下,链接:20. 有效的括号 - 力扣(LeetCode)
三、代码示例
cpp
class Solution {
public:
bool isValid(string s)
{
stack<char> k;
for(auto e : s)
{
if(e == '(') k.push(')');
else if(e == '[') k.push(']');
else if(e == '{') k.push('}');
else{
if(k.empty() || k.top() != e) return false;
k.pop();
}
}
return k.empty();
}
};

看到最后,如果对您有所帮助,还请点赞、收藏和关注,点点关注不迷路,我们下期再见!