对字符串进行全排,就是对去掉某一个字符的字符串进行去全排,全排之后再加上去掉的那个字符。以此类推,对n个长度的字符进行全排,就要对n-1个长度的字符串进行全排,对n-1个长度的字符进行全排,就要对n-2个长度的字符串进行全排、、、、、
并且对每个长度的字符串的排序方式相同,所以要用递归。
代码如下 :
vector<string> permultation(string str)
{
vector<string>result;
if (str.size() == 0)
{
result.push_back(str);
return result;
}
int len = str.size();
for (int i = 0; i < len; i++)
{
string short_str = str.substr(0, i) + str.substr(i + 1);//获取除了第i项之外的全部字符串
vector<string>short_arr = permultation(short_str);//对n-1项的字符串进行全排
int len1 = short_arr.size();
for (int j = 0; j < len1; j++)//将全排的结果加上该字符串
{
string long_word= str[i]+short_arr[j];
result.push_back(long_word);
}
}
return result;//返回字符串数组
}