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;
}
ЗЫ: это не оптимально решение, первое, что пришло в голову. Если подумать, можно либо еще упростить, либо ускорить.
//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