【题目】string的全排列
【思路】用交换法产生全排列,因为是全排列,所以时间复杂度是阶乘
【代码】
#include<iostream>
#include<string>
#include<vector>
using namespace std;
vector<string> combine(const string& data) {
vector<string> ans;
ans.push_back(data);
int len = data.length();
for(int i=0;i<=len-2;i++)
{
int listnum = ans.size();
vector<string> anstemp;
for(int k=0;k < listnum;k++)
{
for(int j=i+1;j<=len-1;j++)
{
string temp = ans[k];
char ch = temp[i];
temp[i] = temp[j];
temp[j] = ch;
anstemp.push_back(temp);
}
}
ans.insert(ans.end(),anstemp.begin(),anstemp.end());
}
return ans;
}
int main()
{
vector<string> test;
test = combine("abc");
cout<<test.size()<<endl;
/*for(int i=0;i<test.size();i++)
{
cout<<test[i]<<endl;
}*/
}