class Solution {
public:
bool isValid(string s) {
stack<char> left,right;
if(s.size()%2!=0) return false;
for(int i=0;i<s.size();i++){
if(s[i]=='(' || s[i]=='{' || s[i]=='['){
if(right.empty())
left.push(s[i]);
else if(s[i]=='('){
if(right.top()==')') right.pop();
else return false;
}else if(s[i]=='['){
if(right.top()==']') right.pop();
else return false;
}else if(s[i]=='{'){
if(right.top()=='}') right.pop();
else return false;
}
}else {
if(left.empty())
right.push(s[i]);
else if(s[i]==')'){
if(left.top()=='(') left.pop();
else return false;
}else if(s[i]==']'){
if(left.top()=='[') left.pop();
else return false;
}else if(s[i]=='}'){
if(left.top()=='{') left.pop();
else return false;
}
}
}
if(!left.empty() || !right.empty()) return false;
return true;
}
};