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

            if (s.at(i) == ')' || s.at(i) == ']' || s.at(i) == '}') {
                if (zhan.size() != 0) {
                    if ((s.at(i) == ')' && zhan.top() != '(')
                            || (s.at(i) == ']' && zhan.top() != '[')
                            || (s.at(i) == '}' && zhan.top() != '{')) {
                        panduan = false;
                        break;
                    }
                    zhan.pop();
                }
                else {
                    panduan = false;
                    break;
                }
            }
        }
        int shu = zhan.size();
        if (panduan && shu == 0){
            return true;
        }
        else {
            return false;
        }
    }
};