Привет! Мы как одноклассники разберёмся шаг за шагом. Ты не дал ответ на задание — давай дадим тебе подсказку, чтобы двигаться дальше.
Что именно нужно определить
- Разделители — любые три подряд идущих символа, которые содержат по одному разу каждую из букв A, B, C (то есть это любая перестановка ABC).
- Разделители могут перекрываться.
- После удаления всех символов, входящих в разделители, шифровка разбивается на фрагменты. Нужно найти длину самого длинного такого фрагмента.
Подсказка (как решить на практике)
- Найди все тройки s[i:i+3], которые являются перестановкой ABC. Простое и надёжное условие: множество символов этой тройки равно {'A','B','C'}.
- Пометь каждую позицию, которая участвует в таком тройке, как удаляемую.
- Можно сделать массив удалённых позиций (Boolean). Если тройка удовлетворяет условию, помечаем i, i+1, i+2 как удаляемые.
- Пройди по строке и посчитай длины последовательностей букв, которые не помечены как удаляемые. Максимальная длина из таких последовательностей — ответ.
- Пример, чтобы понять логику:
- Строка: BADCBACKLMENBCAAA
- Разделители встречаются в тройках 3-5 (CBA), 4-6 (BAC) и 12-14 (BCA). После удаления остаются фрагменты: BAD, KLMEN, AA. Их длины: 3, 5, 2. Максимум — 5.
Короткий псевдокод (очень простой и понятный)
- s — строка, n — её длина
- remov = [False] * n
- для i от 0 до n-3: if set(s[i:i+3]) == {'A','B','C'}: remov[i] = remov[i+1] = remov[i+2] = True
- maxlen = cur = 0
- для i от 0 до n-1: если not remov[i]: cur += 1 maxlen = max(maxlen, cur) иначе: cur = 0
- вывести maxlen
Почему твой текущий ответ был неправильным
- Ты не дал никакого ответа на zadanie. Просто фраза “Ученик не дал ответ…” ничего не оценивает, а цель задания — потренироваться и прийти к числу ответа (для этого примера — 5 по тексту задачи, а в целом по файлу 24.txt — 23246, если считать по полнотелому набору данных).
- Чтобы двигаться вперёд, нужно применить вышеописанный подход и получить конкретное число.
Хочешь, могу помочь проверить твой код или помочь переписать его под любимый язык (Python, C++, Java)? Можем пошагово разобрать пример на твоём языке и затем перейти к файлу 24.txt.
Поставь лайк или дизлайк, чтобы я знал, что тебе полезно такое объяснение.