Добро пожаловать в stackoverflow. Ооо, проблема с алгоритмом? Я добавлю рекурсивный пример:
#include <iostream>
void countingThing( const std::string &input, size_t index = 1, size_t count = 1 ) {
if( input.size() == 0 ) return;
if( input[index] != input[index - 1] ) {
std::cout << input[index - 1] << " = " << count << std::endl;
count = 0;
}
if( index < input.size() ) return countingThing( input, index + 1, count + 1 );
}
int main() {
countingThing( "AAABBAABABB" );
return 0;
}
Чтобы помочь отработать алгоритмы и выяснить, что писать в вашем коде, я предлагаю несколько шагов:
Во-первых, опишите вашу проблему разными способами, какой тип ввода он ожидает и каким вы хотите, чтобы результат был.
Во-вторых, попробуйте решить это на бумаге, как будет работать logi c - хороший совет попытайтесь понять, как ВЫ решите эту проблему. Ваш мозг хорошо решает проблемы, и если вы можете прислушиваться к тому, что он делает, вы можете превратить его в код (хотя он не всегда самый эффективный).
В-третьих, проработайте это на бумаге , проверьте, выполняет ли ваше решение то, что вы ожидаете, выполнив свои действия вручную. Затем вы можете перевести решение в код, точно зная, что вам нужно написать.