class Solution { public: vector<string> Permutation(string str) { vector<string> ans; if(str.size()==0){ return ans; } if(str.size()==1){ ans.push_back(str); return ans; } map<char,int> maps; for(int i=0;i<str.size();i++){ if(!maps[str[i]]){ maps[str[i]]=1; } else{ maps[str[i]]++; } } map<char,int>::iterator it; for(it=maps.begin();it!=maps.end();it++){ string str0=str; vector<string> vecs=Permutation(str0.erase(str0.find(it->first),1)); str0=" "; str0[0]=it->first; for(int i=0;i<vecs.size();i++){ ans.push_back(str0+vecs[i]); } } return ans; } };