我的输入为“AABBABCCCDDDDE”或任何其他类似的字符串,我希望输出为
AA
BB
A
B
CCC
DDDD
E
即。如果当前和下一个字符以及任何其他字符相同,则在同一行上打印字符,否则在下一行打印下一个字符。
我在下面写了代码,
#include <iostream>
using namespace std;
int main()
{
char str[] = "AABBABCCCDDDDE" ;
int i = 0 ;
while(str[i] != '\0') {
if(str[i] == str[i+1]) {
cout << str[i] << str[i+1] << '\n' ;
i++ ;
} else {
cout << str[i] << '\n' ;
}
i++ ;
}
return 0;
}
但是我得到了输出,
AA
BB
A
B
CC
C
DD
DD
E
我需要对上面的内容做一些修改才能得到正确的输出,需要建议。 此外,如果有人能够提出最有效的方法来实现这一目标,那将是一件好事。
答案 0 :(得分:1)
由于您希望在某个时刻打印每个字符,请将{em>的代码放在if
的之外。然后,if
可以测试是否需要换行符:
while(str[i] != '\0') {
// Print the current character
cout << str[i];
// If the next character is different, print a newline.
if (str[i] != str[i+1])
cout << '\n';
++i;
}
答案 1 :(得分:-2)
在这一行:
if(str[i] == str[i+1]) {
cout << str[i] << str[i+1] << '\n' ; //this one
i++ ;
}
删除'\ n'
编辑:和str[i+1]
以避免打印重复