class Solution{
public:
bool isValid(string s){
if(s.length()%2!=0) return false;//一但是奇数说明不是有效的括号
map<char,char> wordbook;//建立哈希表
wordbook.insert(map<char,char>::value_type(')','('));
wordbook.insert(map<char,char>::value_type(']','['));
wordbook.insert(map<char,char>::value_type('}','{'));
stack<char> mystack;
for(int i = 0;i < s.length();i++)
{
if(s[i]=='[' || s[i]=='{' || s[i]=='(')
mystack.push(s[i]);
else if(s[i]==']'||s[i]=='}'||s[i]==')')
{
if(mystack.empty()) return false;
//匹配到右括号,栈中应该存在左括号,否则就是无效的括号
if(wordbook[s[i]]==mystack.top())
{
mystack.pop();
continue;
}
else return false;
}
}
if(mystack.empty()) return true;
else return false;
}
};
wordbook[')'] = '(';
wordbook[']'] = '[';
wordbook['}'] = '{';
这样写更方便把