题目:《程序员面试金典(第5版)》P229
编写一个方法,确定某字符串的所有排列组合。
提示:每增加一个字符,只需将该字符插入已生成的字符串的任意位置。
//将字符t插入str的第index位元素的前面
string Insert(string str,int index, char t)
{
str.insert(str.begin() + index, t);
return str;
}
vector<string> GetPerms(string a)
{
vector<string> res;
if (a.size() <= 1)
{
res.push_back(a);
return res;
}
string str(1,a[0]);
res.push_back(str);
for (int i = 1; i < a.size(); i++)
{
int len = res.size();
char tmp = a[i];
for (int k = 0; k < len; k++)
{
for (int j = 0; j < i; j++)
res.push_back(Insert(res[k], j, tmp));
res[k].insert(res[k].end(), tmp);
res.push_back(res[k]);
}
res.erase(res.begin(), res.begin() + len);
}
return res;
}