假设我们有字符串“ABCAD”,现在我们需要遍历这个字符串的所有可能排列,包括顺时针和逆时针方向。
我的丑陋实现如下:
我的丑陋实现如下:
string s = "ABCAD";
string t ="";
for(int i = 0; i < sz(s); i++){
t = s[i];
for(int j = i+1; ; j++){
if((j) == sz(s)){
j = 0;
}
if(j == i){
break;
}
t+= s[j];
}
cout<<t<<" ";
}
reverse(all(s));
for(int i = 0; i < sz(s); i++){
t = s[i];
for(int j = i+1; ; j++){
if((j) == sz(s)){
j = 0;
}
if(j == i){
break;
}
t+= s[j];
}
cout<<t<<" ";
}
输出:
AHSAU HSAUA SAUAH AUAHS UAHSA UASHA ASHAU SHAUA HAUAS AUASH
我知道这太幼稚了,我认为循环列表会是一个更好的选择,有人能否使用STL更有效地实现同样的事情?