//极简版递归
class Solution {
public:void solve(vector<string> &ans,string path,string remain){
if(remain==""){
ans.push_back(path);
}
else{
bool b[256]={false};
//这里就是定义了所有256个字符(实际上只需要到Z或者z就可以)
string::iterator it;
for(it=remain.begin();it!=remain.end();it++){
if(!b[*it]){//剪枝
b[*it]=true;
char ch=*it;
remain.erase(it, it+1);
solve(ans,path+ch,remain);
remain.insert(it, ch);//恢复现场,用于回溯
}
}
}
}
vector<string> Permutation(string str) {
vector<string> ans;
if(str=="") return ans;
else{
string path="";
string remain=str;
solve(ans,path,remain);
}
return ans;
}
};