C++ O(n) solution using maps


#1

`int Solution::isInterleave(string A, string B, string C) {
int n = A.size() ;
int m = B.size() ;
int l = C.size() ;
map<char,int> ma;
map<char,int> mb;
map<char,int> mc;
for(int i = 0 ; i<n ; i++){

    ma[A[i]]++;
}
for(int i = 0 ; i<m ; i++){

    mb[B[i]]++;
}
for(int i = 0 ; i<l ; i++){

    mc[C[i]]++;
}

map<char,int>::iterator it;
map<char,int>::iterator ita;
map<char,int>::iterator itb;
for(it = mc.begin();it != mc.end() ; it++){
    if(ma[it->first] + mb[it->first] != it->second){
        return 0 ;
    }
    ma[it->first] = 0 ;
    mb[it->first] = 0 ;
}
for(ita = ma.begin();ita != ma.end() ; ita++){
    if(ita->second != 0){
        return 0 ;
    }
}
for(itb = mb.begin();itb != mb.end() ; itb++){
    if(itb->second != 0){
        return 0 ;
    }
}


return 1 ;

}`