题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
class Solution {
public:
vector<string> rec;
vector<string> Permutation(string str) {
int n = str.size();
if(n<=0)
return rec;
dfs(0,n,str);
return rec;
}
void dfs(int start,int n,string str)
{
if(start == n)
rec.push_back(str);
for(int i=start;i<n;i++)
{
if(str[i]==str[start]&&i!=start)
continue;
swap(str[start],str[i]);
dfs(start+1,n,str);
// swap(str[start],str[i]);
}
}
};