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; } };