这才是面试官想要的答案。
#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; }