我想问我所有的程序员同事关于效率的问题。我目前正在解决工作面试中可能会问到的问题,并且遇到了著名的字符串排列。我在下面编写的代码可能是编程历史上最常见的东西,但是,我不知道它的状态,因为我没有检查任何解决方案。
长话短说我在下面编写的程序是否是一个合适的解决方案?或者它可以变得更有效率。问是因为如果有一天我遇到了,我想确定我已经实施了解决这个问题的最佳方法之一。
#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;
}