给定String,使用c ++在同一行上打印相同的字符,在下一行打印不同的字符?

时间:2014-10-03 20:13:06

标签: c++ string

我的输入为“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

我需要对上面的内容做一些修改才能得到正确的输出,需要建议。 此外,如果有人能够提出最有效的方法来实现这一目标,那将是一件好事。

2 个答案:

答案 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]以避免打印重复