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

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

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

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

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

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

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

23 октября 2025 15:15

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

Пошаговый алгоритм

  • Ввод: первую строку читаем как целое число K (> 1), вторую — строку s из латинских букв.
  • Идем по строке слева направо, выделяем каждую максимальную серию одинаковых символов:
    • фиксируем текущий символ ch и находим границу серии до тех пор, пока встречаются такие же символы.
    • вычисляем длину серии run_len.
    • в выходную строку добавляем min(run_len, K) копий символа ch.
  • Переходим к следующей серии и повторяем.
  • По завершении печатаем полученную строку.

Ключевые моменты

  • Сложность: линейная по длине входной строки, O(n) время и O(n) память на выход.
  • Различие между буквами: регистр имеет значение, то есть 'A' и 'a' считаются разными символами.
  • Параметр K > 1, как указано в условии, но код корректно работает и при других значениях (если вдруг встретится).

Пример

  • Ввод: K = 3, s = "coooool"
  • Разбор: 'c' (длина 1) -> "c"; серия 'o' (длина 5) -> оставляем 3 'o' -> "...ooo..."; 'l' (длина 1) -> "l"
  • Вывод: "coool"

Python-реализация (быстрый готовый вариант) def normalize_runs(K, s): if not s: return "" res = [] i = 0 n = len(s) while i < n: ch = s[i] j = i + 1 while j < n and s[j] == ch: j += 1 run_len = j - i res.append(ch * min(run_len, K)) i = j return "".join(res)

Пример использования

print(normalize_runs(3, "coooool")) # вывод: coool

Если хотите, могу привести тесты на другие примеры или адаптировать решение под конкретный язык программирования.

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

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

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

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

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

qr-codegoogle-playapp-store

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

Вы разрабатываете препроцессор текста для языковой модели. Пользователи иногда тянут буквы, например: coooool, yaaaау. Перед обучением модели и при обработке пользовательских сообщений такие повторения нужно нормализовать: каждая подряд идущая серия одинаковых символов должна иметь длину не больше К. По заданным К и строке 5 (состоящей из латинских букв) получите строку 5, в которой длина каждой максимальной серии одинаковых символов не превосходит К. Не меняйте порядок символов и не удаляйте серии полностью. Формат входных данных Первая строка содержит натуральное число К > 1. Вторая строка содержит строку из латинских букв (А..Z, a..z). Формат выходных данных Выведите исправленную строку.
Задача ясна: получить строку, в которой для каждой максимальной серии подряд идущих одинаковых символов длина не превышает заданное число K. Порядок символов не меняем, полностью удалять серии не надо — если серия длинная, обрезаем её до длины K. Пошаговый алгоритм - Ввод: первую строку читаем как целое число K (> 1), вторую — строку s из латинских букв. - Идем по строке слева направо, выделяем каждую максимальную серию одинаковых символов: - фиксируем текущий символ ch и находим границу серии до тех пор, пока встречаются такие же символы. - вычисляем длину серии run_len. - в выходную строку добавляем min(run_len, K) копий символа ch. - Переходим к следующей серии и повторяем. - По завершении печатаем полученную строку. Ключевые моменты - Сложность: линейная по длине входной строки, O(n) время и O(n) память на выход. - Различие между буквами: регистр имеет значение, то есть 'A' и 'a' считаются разными символами. - Параметр K > 1, как указано в условии, но код корректно работает и при других значениях (если вдруг встретится). Пример - Ввод: K = 3, s = "coooool" - Разбор: 'c' (длина 1) -> "c"; серия 'o' (длина 5) -> оставляем 3 'o' -> "...ooo..."; 'l' (длина 1) -> "l" - Вывод: "coool" Python-реализация (быстрый готовый вариант) def normalize_runs(K, s): if not s: return "" res = [] i = 0 n = len(s) while i < n: ch = s[i] j = i + 1 while j < n and s[j] == ch: j += 1 run_len = j - i res.append(ch * min(run_len, K)) i = j return "".join(res) # Пример использования # print(normalize_runs(3, "coooool")) # вывод: coool Если хотите, могу привести тесты на другие примеры или адаптировать решение под конкретный язык программирования.