用一个栈维护。

class Solution {
public:
    bool isValid(string s) {
        stack<int> stk;
        int len = s.size();
        for(int i = 0; i < len; i++)
        {
            if(s[i] == '(' || s[i] == '[' || s[i] == '{')
                stk.push(s[i]);
            else
            {
                if(s[i] == ')')
                    if(stk.empty() || stk.top() != '(') return false;
                    else stk.pop();
                if(s[i] == ']')
                    if(stk.empty() || stk.top() != '[') return false;
                    else stk.pop();
                if(s[i] == '}')
                    if(stk.empty() || stk.top() != '{') return false;
                    else stk.pop();
            }
        }
        if(!stk.empty()) return false;
        return true;
    }
};