class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    bool isValid(string s) {
        // write code here
	  
	  //本题参考了“鸠摩罗什”的答案,如下
        stack<char> a;//照例先定义一个栈
        
        for(int i=0;i<s.size();i++)//遍历字符串中的元素
        {
            if(s[i]=='{')//将左括号对应的右括号入栈,下同
            a.push('}');
            else if(s[i]=='(')
            a.push(')');
            else if(s[i]=='[')
            a.push(']');
            else//对于右括号,如果栈空或者不匹配则返回假值
            {
                if(a.empty()||s[i]!=a.top())
                    return false;
                a.pop();//否则就删掉一个栈中括号(出栈)
            }
        }
        return a.empty();//如果能全部消完就是真值,否则为假值
    }
};