有效括号

思路

用栈存储没有匹配的符号

   bool isValid(string s) {
        std::stack<char> stk;
        int sz = s.size();
        for (int i = 0; i < sz; ++i) {
            if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
                stk.push(s[i]);// 无法匹配直接放入栈
                continue;
            } else if (s[i] == ')') {
                if (stk.empty()) return false;//需要匹配,但是栈为空,返回false
                char foo = stk.top();
                if (foo != '(') return false;// 匹配不成功,返回false
                stk.pop();// 匹配成功,进行下一个
                continue;
            } else if (s[i] == ']') {
                if (stk.empty()) return false;
                char foo = stk.top();
                if (foo != '[') return false;
                stk.pop();
                continue;
            }else if (s[i] == '}') {
                if (stk.empty()) return false;
                char foo = stk.top();
                if (foo != '{') return false;
                stk.pop();
                continue;
            }
        }
        if (stk.empty()) return true;
        return false;
    }
posted @ 2021-07-14 11:39  cyssmile  阅读(33)  评论(0)    收藏  举报