Top.Mail.Ru
Ответы
Аватар пользователя
7лет
Изменено
Аватар пользователя
Аватар пользователя
Программирование
+1

[С++] Как найти количество подряд идущих одинаковых букв ?

Найдете ошибку?
//coding_str - результат работы алгоритма
int j(0);
for(int i(0); input_str[i] != '\0'; i+=j-i) {
j = i+1;

while(input_str[ i ] == input_str[ j ] && input_str[ j ] != '\0' )
j++;

strcat(coding_str, itoa(j-i)); //добавляем в выходную строку число повторов одного символа
count_str_coding+=size_dig(j);

coding_str[ count_str_coding] = input_str[i]; //добавляем туда же сам символ
count_str_coding++;
}
Вход :
qqqqqqqwwweeeeeee
Выход : 7q3w7e

Проблеммный пример:
xxxzzrrvbvvvvvww

По дате
По рейтингу
Аватар пользователя
Новичок
7лет

Публикуйте полный текст программы на ресурсах типа pastebin.com.
Но из ваших отрывков кода понятно, что вы делаете кучу лишних действий для такой программы:

#include <string>
#include <iostream>
using namespace std;

int main() {
string s;
getline(cin, s);
int n = 0;
char pc = 0;
if (s.length()) pc = s[0];
for (char c : s) {
if (c == pc) {
++n;
} else {
cout << n << pc;
n = 1;
pc = c;
}
}
if (n > 0) cout << n << pc;
cout << endl;
}

ЗЫ: это не оптимально решение, первое, что пришло в голову. Если подумать, можно либо еще упростить, либо ускорить.

Аватар пользователя
7лет

Ну это, что то типа сортировки, не узнаешь искомое пока не пройдешь весь путь в "квадрате"!