美文网首页
力扣第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