class Solution {
public:
    bool isValid(string s) {
        //  有效一定是偶数大小
        //  这里不是边界,只是快速判断的条件
        //  可选添加
      if (s.size() % 2) {
        return false;
      }
      
      std::stack<char> stack_;
      
      for (int i = 0; i < s.size(); ++i) {
        char tmp = stack_.top();
        
        if (!stack_.empty() && 
           ((tmp == '(' && s[i] == ')') ||
              (tmp == '[' && s[i] == ']') ||
              (tmp == '{' && s[i] == '}'))) {
          stack_.pop();
          continue;
        }
        stack_.push(s[i]);
      }
      
      if (!stack_.empty()) {
        return false;
      }
      
      return true;
    }
};