字符串的排列
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
我觉得这是最暴力的解法了。
class Solution {
public:
vector<string> Permutation(string str) {
if(str.empty()) return vector<string>{};
set<string> sr;
int len=str.length();
vector<bool> bflag(len,false);
string s{};
toGet(sr,str,len,bflag,s);
vector<string> res(sr.begin(),sr.end());
return res;
}
private:
void toGet(set<string> &sr,string &str,int &len,vector<bool> bflag,string s){
if(s.length()==len){
sr.insert(s);
return;
}
for(int i=0;i<len;++i){
if(!bflag[i]){
bflag[i]=true;
toGet(sr,str,len,bflag,s+str[i]);
bflag[i]=false;
}
}
}
};