class Solution {
public:
bool isValid(string s) {
if(s.size()<2||s.size()%2!=0)return false;
unordered_map<char,char>hashmap;
hashmap['(']=')';
hashmap['[']=']';
hashmap['{']='}';
if(s.size()==2)return hashmap[s[0]]==s[1];
int i=1;
int sum1=0,sum2=0;
int j;
while(i<s.size())
{
j=i-1;
if(s[j]==s[0])++sum1;
if(s[i]==hashmap[s[0]]){
++sum2;
if(sum1==sum2){
if(i==s.size()-1)return isValid(s.substr(1,s.size()-2));
if(i==1)return isValid(s.substr(2,s.size()-2));
return isValid(s.substr(1,i-1))&&isValid(s.substr(i+1,s.size()-1-i));
}
}
i=i+2;
}
return false;
}
};