Задача Задача №3481598
А
А
Алгоритм:
- Проходим по строке S слева направо.
- Следим за текущей серией одинаковых символов: хранится последний символ и его длина.
- При новом символе начинаем новую серию (добавляем его в итоговую строку).
- Если символ повторяется, увеличиваем счетчик и добавляем символ в результат только пока длина серии не превысит K. Далее повторения пропускаем.
Сложность: время O(|S|), память O(|S|) для результата.
Код (C++17):
#include <bits/stdc++.h> using namespace std;
int main() { ios::sync_with_stdio(false); cin.tie(nullptr);
int K;
if (!(cin >> K)) return 0;
string S;
if (!(cin >> S)) return 0;
string res;
char last = '\0';
int cnt = 0;
for (char c : S) {
if (c != last) {
res.push_back(c);
last = c;
cnt = 1;
} else {
cnt++;
if (cnt <= K) res.push_back(c);
}
}
cout << res;
return 0;
}
Пример: Ввод: 2 uraaaaSuperrr Вывод: uraaSuperr