美文网首页
力扣第20题:有效的括号

力扣第20题:有效的括号

作者: DCBXZ | 来源:发表于2022-01-05 17:15 被阅读0次

经典的括号匹配问题,用stack解决。

class Solution {
public:
    bool isValid(string s) {
        unordered_map<char,char> pairs = {
            {')','('},
            {']','['},
            {'}','{'},
        };
        stack<char> stk;
        for(char i : s)
        {
            // 遇到右括号
            if(pairs.count(i))
            {
                // 遇到右括号时,如果存储左括号的栈为空了,说明右括号多了,返回false;
                // 遇到右括号时,如果存储左括号和右括号不匹配,返回false;
                if(stk.empty()||stk.top()!=pairs[i])
                {
                    return false;
                }
                // 程序走到这的时候,说明上面的if不成立,说明当前的左右括号匹配,于是弹出左括号,同时循环进入到下一步;
                stk.pop();
            }
            // 遇到左括号,压入栈
            else
            {
                stk.push(i);
            }
        }
        // 程序走到最后,如果栈为空了,那就是完成了匹配,如果不为空,那就是有多余的左括号;
        return stk.empty();
    }
};

相关文章

网友评论

      本文标题:力扣第20题:有效的括号

      本文链接:https://www.haomeiwen.com/subject/owhkcrtx.html