如何在给定的字符串中查找字母序列?

Jub*_*din 3 c++ algorithm c++11 c++14 c++17

我的字符串是"AAABBAABABB",我想得到结果

A = 3
B = 2
A = 2
B = 1 
A = 1
B = 2
Run Code Online (Sandbox Code Playgroud)

我试过用

for (int i = 0; i < n - 1; i++) {
    if (msg[i] == msg[i + 1]) {
        if(msg[i]==A)
            a++;
        else
            b++;
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过它对我不起作用。而且我不明白是否还有其他方法可以找到它。请帮帮我。

mah*_*eju 5

通过以下方式遍历数组:

  1. 如果 i = 0,我们可以将一个变量设置为第 0 个字符并按 1 计数。
  2. 如果第 i 个字符等于前一个字符,我们可以增加计数器。

  3. 如果第 i 个字符不等于第 (i-1) 个字符,我们可以打印该字符、计数器并开始计算新字符。

尝试以下代码段:

char ch = msg[0];
int cnt = 1;

for (int i = 1; i < n; i ++){
   if(msg[i] != msg[i-1]){
      cout<<ch<<" "<<cnt<<endl;
      cnt = 1;
      ch = msg[i];
   }
   else {
      cnt++;
   }
}

cout<<ch<<" "<<cnt<<endl;
Run Code Online (Sandbox Code Playgroud)