Ctrl K

Самое плотное совпадение

Средняя
Даны две строки left и right из строчных латинских букв, индексы с нуля. Рассмотрим четвёрки индексов (i, j, a, b), где 0 ≤ i ≤ j < len(left) и 0 ≤ a ≤ b < len(right), такие что кусок left[i..j] совпадает с куском right[a..b] (оба конца включительно). Среди всех таких четвёрок найдите наименьшее значение j − a — конец куска в left минус начало куска в right — и верните, сколько четвёрок его достигают. Если совпадающих кусков нет, верните 0.
Пример 1
left="race", right="care" → 1

Лучший вариант — буква r: в left она на позиции 0, в right на позиции 2, разность 0 − 2 = −2. Меньше получить нельзя, и такая четвёрка одна.

Пример 2
left="ab", right="ab" → 2

Буква a даёт 0 − 0 = 0, буква b даёт 1 − 1 = 0. Длинный кусок «ab» даёт 1 − 0 = 1, это хуже. Минимум 0 достигается двумя четвёрками.

Пример 3
left="dog", right="cat" → 0

Общих букв нет — совпадающих кусков тоже.

Ограничения
  • 1 ≤ len(left), len(right) ≤ 2·10⁵
  • Обе строки состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКуски без общих букв СредняяБез одинаковых соседей СредняяРазложить буквы на палиндромы СредняяРазное число повторов СредняяПалиндром из двухбуквенных карточек Средняя
загружаем Python…
Вход
left="race", right="care"
Ожидается
1

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