Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 23 октября 2025 12:13

Ограничение по времени: 1 секунда Ограничение по памяти: 256 мегабайт Вы разрабатываете препроцессор текста для языковой модели. Пользователи иногда тянут буквы, например: сооoool, уаааау. Перед обучением модели и при обработке пользовательских сообщений такие повторения нужно нормализовать: каждая подряд идущая серия одинаковых символов должна иметь длину не больше К. По заданным К и строке S (состоящей из латинских букв) получите строку S', в которой длина каждой максимальной серии одинаковых символов не превосходит К. Не меняйте порядок символов и не удаляйте серии полностью. Формат входных данных Первая строка содержит натуральное число К > 1. Вторая строка содержит строку S из латинских букв (A…Z, a…z). Формат выходных данных Выведите исправленную строку.

Ответ нейросети

23 октября 2025 12:13

Задача и решение

  • Что нужно сделать: для строки S, состоящей из латинских букв, привести каждый максимальный участок повторяющегося символа к длине не более K. То есть в каждом блоке одинаковых символов сохраняем не более первых K повторений, остальные пропускаем. Порядок символов не меняем, ни одну серию целиком не удаляем (оставляем максимум K символов из каждой серии).

  • Подход: пройти по строке слева направо, считать текущую серию одинаковых символов. Если текущий символ такой же, как предыдущий, увеличить счётчик; иначе начать новую серию и сбросить счётчик. Если счётчик не превышает K, дописать символ к результату, иначе пропустить.

  • Сложность: время O(n), память O(n) для итоговой строки.

  • Пример: пусть K = 3, S = "aaabbbbccddddd"
    Результат: "aaabbbccdddd" (первые 3 из каждой серии: a(3), b(3), c(2), d(4) -> но ограничиваем до 3, значит "aaabbbccddd" если дублируются, в общем тестовый пример можно подставлять свои).

Пример кода на Python 3

def normalize_runs(K, S): res = [] prev = None count = 0 for ch in S: if ch == prev: count += 1 else: prev = ch count = 1 if count <= K: res.append(ch) return ''.join(res)

def main(): import sys data = sys.stdin.read().splitlines() if not data: return K = int(data[0].strip()) S = data[1].strip() if len(data) > 1 else "" print(normalize_runs(K, S))

if name == "main": main()

Как использовать:

  • Ввод первого аргумента — K (целое число > 1).
  • Ввод второй строки — S (только латинские буквы, без пробелов).
  • Выводится строка S' с ограничением длины любых подряд идущих одинаковых символов до K.

Дополнительные заметки:

  • Если K >= длина текущей серии, серия остаётся без изменений.
  • Если серия длиннее K, лишние символы удаляются (остаются только первые K повторений). Порядок символов и оставшиеся части строки сохраняются.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Ограничение по времени: 1 секунда Ограничение по памяти: 256 мегабайт Вы разрабатываете препроцессор текста для языковой модели. Пользователи иногда тянут буквы, например: сооoool, уаааау. Перед обучением модели и при обработке пользовательских сообщений такие повторения нужно нормализовать: каждая подряд идущая серия одинаковых символов должна иметь длину не больше К. По заданным К и строке S (состоящей из латинских букв) получите строку S', в которой длина каждой максимальной серии одинаковых символов не превосходит К. Не меняйте порядок символов и не удаляйте серии полностью. Формат входных данных Первая строка содержит натуральное число К > 1. Вторая строка содержит строку S из латинских букв (A…Z, a…z). Формат выходных данных Выведите исправленную строку.
Задача и решение - Что нужно сделать: для строки S, состоящей из латинских букв, привести каждый максимальный участок повторяющегося символа к длине не более K. То есть в каждом блоке одинаковых символов сохраняем не более первых K повторений, остальные пропускаем. Порядок символов не меняем, ни одну серию целиком не удаляем (оставляем максимум K символов из каждой серии). - Подход: пройти по строке слева направо, считать текущую серию одинаковых символов. Если текущий символ такой же, как предыдущий, увеличить счётчик; иначе начать новую серию и сбросить счётчик. Если счётчик не превышает K, дописать символ к результату, иначе пропустить. - Сложность: время O(n), память O(n) для итоговой строки. - Пример: пусть K = 3, S = "aaabbbbccddddd" Результат: "aaabbbccdddd" (первые 3 из каждой серии: a(3), b(3), c(2), d(4) -> но ограничиваем до 3, значит "aaabbbccddd" если дублируются, в общем тестовый пример можно подставлять свои). Пример кода на Python 3 def normalize_runs(K, S): res = [] prev = None count = 0 for ch in S: if ch == prev: count += 1 else: prev = ch count = 1 if count <= K: res.append(ch) return ''.join(res) def main(): import sys data = sys.stdin.read().splitlines() if not data: return K = int(data[0].strip()) S = data[1].strip() if len(data) > 1 else "" print(normalize_runs(K, S)) if __name__ == "__main__": main() Как использовать: - Ввод первого аргумента — K (целое число > 1). - Ввод второй строки — S (только латинские буквы, без пробелов). - Выводится строка S' с ограничением длины любых подряд идущих одинаковых символов до K. Дополнительные заметки: - Если K >= длина текущей серии, серия остаётся без изменений. - Если серия длиннее K, лишние символы удаляются (остаются только первые K повторений). Порядок символов и оставшиеся части строки сохраняются.