前言
正文
1. 字母的全排列
code
class Solution {
public:
set<string> tempRes;//为了剔除掉重复的,所以用set
vector<string> Permutation(string str)
{
vector<string> strOut;
if (str.size() == 0)
return strOut;
Recursion(str, 0);
for (auto x : tempRes)
{
strOut.push_back(x);
}
return strOut;
}
/* void swap(string str,int r,int k)
{
char temp = str[k];
str[k] = str[r];
str[r] = temp;
}
*/
void Recursion(string str, int index)
{
if (index == str.size() - 1)//这个只是为了把最后一个也放进去,然后回溯的时候就会把该放的放进去
tempRes.insert(str);
for (int i = index; i < str.size(); i++)
{
swap(str[index], str[i]);
Recursion(str, index + 1);
}
}
};