class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @return bool布尔型
     */
    bool isValid(string s) {
        // write code here
        stack<char>str;
        for (int i = 0; i < s.size(); i++) {
            switch (s[i]) {
                case '(':
                case '[':
                case '{':
                    str.push(s[i]);
                    break;
                case ')':
                    if (str.empty() || str.top() != '(') {
                        return false;
                    }
                    str.pop();
                    break;
                case ']':
                    if (str.empty() || str.top() != '[') {
                        return false;
                    }
                    str.pop();
                    break;
                case '}':
                    if (str.empty() || str.top() != '{') {
                        return false;
                    }
                    str.pop();
                    break;

            }
        }
        return str.empty() ? true : false;
    }
};