Ctrl K

Якорь рядом с напарником

Средняя
Даны строка text, две короткие строки anchor и companion и число reach. Позиция i (нумерация с нуля) подходит, если с неё в text начинается anchor и при этом где-то в text есть вхождение companion, которое начинается на позиции j с |i - j| ≤ reach. Вхождения могут перекрываться между собой, а anchor и companion могут совпадать. Верните все подходящие позиции в порядке возрастания.
Пример 1
text="catdogxxxxcat", anchor="cat", companion="dog", reach=3 → [0]

«cat» начинается на позициях 0 и 10, «dog» — на позиции 3. Для позиции 0 расстояние 3 ≤ 3, а для позиции 10 оно равно 7, это слишком далеко.

Пример 2
text="aaaa", anchor="aa", companion="aaa", reach=1 → [0, 1, 2]

«aa» начинается на позициях 0, 1, 2, а «aaa» — на 0 и 1. Каждая позиция «aa» находится не дальше чем в 1 от какого-нибудь «aaa».

Пример 3
text="abcde", anchor="e", companion="z", reach=5 → []
Ограничения
  • 1 ≤ reach ≤ len(text) ≤ 10⁵
  • 1 ≤ len(anchor), len(companion) ≤ 10
  • Все строки состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСлово рядом с якорем СложнаяЦель из начал слов СредняяХвосты, повторяющие начало СложнаяФраза из начал слов: длинная версия СложнаяСамый длинный повтор Средняя
загружаем Python…
Вход
text="catdogxxxxcat", anchor="cat", companion="dog", reach=3
Ожидается
[0]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 116 тестов на сервере, включая скрытые.