Menu
CoddyTech

Minimum Window Substring

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

Если есть несколько самых коротких подстрок, верните самую левую. Если ни одна подстрока не содержит все символы из 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 все три есть в четырёх символах, а ни одна последовательность из трёх символов не содержит их все.
challenge icon

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

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

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

Тест #1

Тест #2

Тест #3

Аргументы

s = "mappingtheplan"
t = "nap"

Ожидаемый вывод

"plan"