暴力求解
class Solution {
public:
// add 'S' in all possible places
set<string> func(string str, char ch){ // 'AAB' ,'C'
set<string> res;
res.insert(ch+str);
for(int i=0;i<str.size();i++){ // [0,i], ch, [i+1,str.size()-1]
string left = str.substr(0, i-0+1);
string right = str.substr(i+1, str.size()-i-1);
string temp = left + ch + right;
res.insert(temp);
}
return res;
}
int numTilePossibilities(string tiles) {
set<string> res, nextres;
for(int i=0;i<tiles.size();i++){ // i-th char {B}
res = nextres;
string aaa = "";
aaa += tiles[i];
nextres.insert(aaa); // {A, B}
for(auto it=res.begin();it!=res.end();it++){ // pre set {A}
//cout<<"*it"<<" ";
set<string> aa = func(*it, tiles[i]); // B -> A
nextres.insert(aa.begin(), aa.end());
}
//cout<<endl;
}
return nextres.size();
}
};