栈-20.有效的括号-力扣(LeetCode)
一、题目解析
对于这个字符串需要左右括号匹配,并且是以正确的顺序
二、算法原理
解法1.图+栈
解法2.用else if代替图+栈
正常做法:对于三种左括号直接进栈('(','[','{'进栈),然后判断与下一个括号是否匹配,匹配则出栈,不匹配则返回false。
改进:当遇到三种左括号时,可以进栈对应的右括号(')',']','}'进栈),然后判断与下一个括号是否相同,当栈为空或者栈顶元素括号不匹配时,返回false,然后出栈。
最后返回值为栈是否为空,为空则返回true,所有括号匹配完,反之为false。
思考过后可以自己实现一下,链接:20. 有效的括号 - 力扣(LeetCode)
三、代码示例
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();}
};
看到最后,如果对您有所帮助,还请点赞、收藏和关注,点点关注不迷路,我们下期再见!