这才是面试官想要的答案。

#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
string s;
map<string,int> mp; 
void swap(char &x,char &y){
    char temp=x;
    x=y;
    y=temp;
}
void dfs(int now){
    if(now==s.size()){
        mp[s]=1;
        return ;
    }
    for(int i=now;i<s.size();i++){
        swap(s[now],s[i]);
        //cout<<"convert to:"<<s<<endl;
        dfs(now+1);
        swap(s[now],s[i]);
        //cout<<"convert back:"<<s<<endl;
    }
}
int main(){
    cin>>s;
    dfs(0);
    for(auto i=mp.begin();i!=mp.end();i++){
        cout<<i->first<<endl;
    }
    return 0;
}