【发布时间】:2010-02-17 19:39:51
【问题描述】:
假设我们有字符串“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 绍亚 AUAHS UAHSA UASHA 阿修 肖阿 豪斯 AUASH
我知道太天真了,AFAIK 循环列表会是更好的选择,有人可以使用 STL 更有效地实现同样的事情吗?
【问题讨论】:
-
如果你想要一个循环列表:stackoverflow.com/questions/947489/…
标签: c++ stl data-structures