#include <stack>
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();
    }
};