同僚のプログラマー全員に、効率だけについて質問したいと思います。私は現在、就職の面接で尋ねられる可能性のある問題を解決しており、有名なstringの順列に出くわしました。以下に書いたコードは、プログラミングの歴史の中で最も一般的なものかもしれませんが、解決策を確認していないため、ステータスがわかりません。
長い話ですが、私が以下にコーディングした短いプログラムは適切な解決策でしょうか? または、さらに効率的にすることはできますか。いつか出くわしたら、この問題に対する最良のアプローチの1つを実装したことを確認したいので、尋ねます。
#include <iostream>
using namespace std;
int fac(int num)
{
int result=1;
for(int i=1;i<=num;i++)
result*=i;
return result;
}
int main(int argc, const char * argv[])
{
string str="abcd";
int limit=fac(str.size());
int mod=str.size();
for(int i=0;i<limit;i++){
swap(str[i%mod],str[(i+1)%mod]);
cout<<str<<endl;
}
return 0;
}