Menu
CoddyTech

Minimum Window Substring

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

Если несколько подстрок имеют одинаковую минимальную длину, верните самую левую. Если ни одна подстрока s не содержит все символы из t, верните пустую строку.

Функция

minWindow(s: string, t: string) → string
sstring
строка, в которой нужно выполнить поиск
tstring
символы, которые должно содержать окно, включая повторы
Возвращаетstring
самую короткую, а затем самую левую подстроку s, которая содержит все символы t, или пустую строку

Ограничения

  • 1 ≤ s.length ≤ 5 × 104
  • 1 ≤ t.length ≤ 104
  • s и t содержат только английские буквы. Заглавные и строчные буквы — это разные символы.
  • Если несколько подстрок имеют минимальную длину, ответом будет самая левая; если таких подстрок нет, это "".

Примеры

Ввод
s = "mappingtheplan"t = "nap"
Вывод
"plan"
Пояснение
При чтении слева первое окно, в котором есть n, a и p, — это appin, пять символов длиной. plan в конце содержит все три буквы в четырёх символах, а ни одна последовательность из трёх символов этого не делает.

lock icon+17 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Когда t состоит всего из нескольких букв, а s — длинная строка, большая часть s никогда не будет иметь значения. Можешь сделать так, чтобы окно перемещалось только между позициями, в которых находится буква из t?

Сбросить код
def minWindow(s, t):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

s = "mappingtheplan"
t = "nap"

Ожидается

"plan"