class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    bool isValid(string s) {
        // write code here
        vector<char> vecChar;
        bool valid = true;
        for(string::size_type i = 0; i < s.size(); ++i)
        {
            if('(' == s[i] || '[' == s[i] || '{' == s[i])
            {
                vecChar.push_back(s[i]);
            }
            else if (')' == s[i]) 
            {
                if(!vecChar.empty() &&  '(' == vecChar[vecChar.size() - 1])
                {
                    vecChar.pop_back();
                }
                else
                {
                    valid = false;
                    break;
                }
            }
            else if (']' == s[i]) 
            {
                if(!vecChar.empty() && '[' == vecChar[vecChar.size() - 1])
                {
                    vecChar.pop_back();
                }
                else
                {
                    valid = false;
                    break;
                }
            }
            else if ('}' == s[i]) 
            {
                if(!vecChar.empty() && '{' == vecChar[vecChar.size() - 1])
                {
                    vecChar.pop_back();
                }
                else
                {
                    valid = false;
                    break;
                }
            }
        }

        if(valid && !vecChar.empty())
        {
            valid = false;
        }

        return valid;
    }
};