如何使用调整后的字符串索引第二次通过循环运行字符串
How to get the string to be run through the loop a second time with the adjusted string index?
试图编写将录制输入字符串和"缩写"的代码。例如,如果给出了AABB,则输出应为BC。基本上,如果有任何双字母,它将升至字母内的下一个字母,因此AA = B等。这对于第一次运行良好,但直到完成才能通过。如果给定的字符串为AAAA,则输出应为C,而代码输出BB则应。如何调整代码以运行字符串适当的次数?
string abbreviate (string loc){
int loopCount;
sort(loc.begin(), loc.end());
for ( unsigned int i = 0; i < loc.length() ; i++){
if(loc[i] == loc[i+1]) {
if(loc[i] == 'a'){
loc[i] = 'b';
loc[i+1] = 0;
}else if(loc[i] == 'b'){
loc[i] ='c';
loc[i+1]= 0;
}else if(loc[i] == 'c'){
loc[i] ='d';
loc[i+1]= 0;
}else if(loc[i] == 'd'){
loc[i] = 'e';
loc[i+1]= 0;
}else if(loc[i] == 'e'){
loc[i] ='f';
loc[i+1]= 0;
}else if(loc[i] == 'f'){
loc[i] ='g';
loc[i+1]= 0;
}else if(loc[i] == 'g'){
loc[i] ='h';
loc[i+1]= 0;
}else if(loc[i] == 'h'){
loc[i] ='i';
loc[i+1]= 0;
}else if(loc[i] == 'i'){
loc[i] ='j';
loc[i+1]= 0;
}else if(loc[i] == 'j'){
loc[i] ='k';
loc[i+1]= 0;
}else if(loc[i] == 'k'){
loc[i] ='l';
loc[i+1]= 0;
}else if(loc[i] == 'l'){
loc[i] ='m';
loc[i+1]= 0;
}else if(loc[i] == 'm'){
loc[i] ='n';
loc[i+1]= 0;
}else if(loc[i] == 'n'){
loc[i] ='o';
loc[i+1]= 0;
}else if(loc[i] == 'o'){
loc[i] ='p';
loc[i+1]= 0;
}else if(loc[i] == 'p'){
loc[i] ='q';
loc[i+1]= 0;
}else if(loc[i] == 'q'){
loc[i] ='r';
loc[i+1]= 0;
}else if(loc[i] == 'r'){
loc[i] ='s';
loc[i+1]= 0;
}else if(loc[i] == 's'){
loc[i] ='t';
loc[i+1]= 0;
}else if(loc[i] == 't'){
loc[i] ='u';
loc[i+1]= 0;
}else if(loc[i] == 'u'){
loc[i] ='v';
loc[i+1]= 0;
}else if(loc[i] == 'w'){
loc[i] ='x';
loc[i+1]= 0;
}else if(loc[i] == 'x'){
loc[i] ='y';
loc[i+1]= 0;
}else if(loc[i] == 'y'){
loc[i] ='z';
loc[i+1]= 0;
}
}
}
return loc;
}
您可以拥有一个嵌套循环,并具有可变检查是否在上次循环迭代中发生了变化。例如,您的代码看起来与此相似:
// Pseudocode
bool changed = true; // This will keep track if previous loop has changed any values
while (changed) {
changed = false; // Set to false at beginning of loop
for (size_t i = 0; i < stringLength; ++i) {
if (/*two same characters in a row*/) {
// Change character to the next one in the alphabet
changed = true; // This will indicate the outer loop to run again
}
}
}
这样,只有在所有同意字符都已更改时,该程序才会停止。
您的代码中还有其他一些问题,例如索引错误,这是我如何实现您的功能的一个示例:https://wandbox.org/permlink/permlink/n0hk8sopneo6izv7
相关文章:
- 在循环C++中指定字符串之后,不会打印该字符串
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- C++-字符串是否包含一个带有简单循环的单词
- 在 c++ 中查找字符串中没有循环的数字总和
- 比较两个字符串后卡在无限循环中
- C++ - 使用基于范围的 for 循环将字符值分配给向量中的字符串不会分配值
- 而循环跳过 cin.getline() 对于 C 字符串
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 如何使用将字符串拆分为 for 循环中的变量的程序
- 是否有可能实现O(N)时间和O(1)空间解决方案,以实现C++中的字符串循环移位
- 循环访问还包含未使用元素的字符串数组
- 循环访问资源字符串表
- C++ - 使用用户输入的字符串数据检查结构字符串数据(无限执行 while 循环)
- 修改向量中的字符串?(不使用循环)
- 试图突破字符串循环
- C++和Java的字符串循环性能比较
- 无法通过字符串循环我的程序以将其从英语翻译成猪拉丁语
- C++ 字符串循环检查相同的单词
- 为什么 javascript 中不使用字符串循环的C++语法?