输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
class Solution {
public://res表示传回结果。
void permute(string s,int k,vector<string> &res)
{
//如果是最后一个数字
if(k==s.size()-1) res.push_back(s);
else
{
for(int i=k;i<s.size();i++)
{
if(i!=k&&s[i]==s[k]) continue;
swap(s[i],s[k]);
permute(s,k+1,res);
swap(s[i],s[k]);
}
}
}
vector<string> Permutation(string str) {
///2017-7-9
//周日 雨。
//1 递归
//2
vector<string> res;
if(str.size()==0) return res;
// int k=0;
// sort(str.begin(),str,end());
permute(str,0,res);
return res;
}
//param@A
//s表示字符串
//k表示起始点
};