class Solution {
public:
bool isValid(string s) {
int n = s.size();
if(n % 2 != 0 ) return false;
stack<char> sta;
for(int i = 0; i < n; i++){
if(s[i] == '(' || s[i] == '{' || s[i] == '[') sta.push(s[i]);
else{
switch (s[i]) {
case ')':{ //最容易掉忽略的就是当检测到一个左括号时,忘记判断此时栈的状态
if(sta.empty() || sta.top() != '(') return false;
break;
}
case '}':{
if(sta.empty() || sta.top() != '{') return false;
break;
}
case ']':{
if(sta.empty() || sta.top() != '[') return false;
break;
}
default:
break;
}
sta.pop();
}
}
if(!sta.empty())
return false;
else
return true;
}
};