我想向所有的程序员们提问,仅就 效率 这个问题。我目前正在解决一些可能会在面试中被问到的问题,其中涉及到著名的字符串 排列组合 问题。我下面所编写的代码可能是编程历史上最常见的事情之一,但是我不知道它的状态,因为我还没有查找过任何解决方案。
长话短说,我下面所编写的程序是否是一个合适的解决方案?或者它能否变得更加高效?我问这个问题是因为如果有一天我再次遇到这种情况,我想确保我已经实现了最佳的解决方案之一。
#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;
}
std::next_permutation
吗? - Blastfurnace