Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Александр Майнер Ученик (93), закрыт 5 лет назад
Найдете ошибку?
//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
Лучший ответ
ra Высший разум (113296) 6 лет назад
Публикуйте полный текст программы на ресурсах типа 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;
}

ЗЫ: это не оптимально решение, первое, что пришло в голову. Если подумать, можно либо еще упростить, либо ускорить.
Остальные ответы
данил тушев Гуру (3879) 6 лет назад
Ну это, что то типа сортировки, не узнаешь искомое пока не пройдешь весь путь в "квадрате"!
Похожие вопросы