Menu
CoddyTech

Minimum Window Substring

Otrzymujesz dwa ciągi znaków: s i t. Znajdź najkrótszy podciąg s, który zawiera każdy znak z t, uwzględniając powtórzenia: jeśli t zawiera daną literę dwa razy, podciąg musi zawierać ją co najmniej dwa razy. Kolejność nie ma znaczenia, a mogą się w nim znaleźć również inne znaki.

Jeśli kilka podciągów ma minimalną długość, zwróć ten najbardziej wysunięty w lewo. Jeśli żaden nie zawiera wszystkich znaków z t, zwróć pusty ciąg znaków.

Funkcja

minWindow(s: string, t: string) → string
sstring
ciąg znaków, którego szukamy
tstring
znaki, które okno musi zawierać, wraz z powtórzeniami
Zwracastring
najkrótszy, a w przypadku remisu najbardziej lewy fragment s zawierający wszystkie znaki t albo pusty ciąg

Ograniczenia

  • 1 ≤ s.length ≤ 5 × 104
  • 1 ≤ t.length ≤ 104
  • s i t zawierają wyłącznie angielskie litery. Wielkie i małe litery to różne znaki.
  • Gdy kilka podciągów jest najkrótszych, odpowiedzią jest ten najbardziej po lewej; gdy nie ma żadnego, jest nią "".

Przykłady

Wejście
s = "mappingtheplan"t = "nap"
Wyjście
"plan"
Wyjaśnienie
Pierwsze od lewej okno zawierające n, a i p to appin — pięć znaków. plan zawiera wszystkie trzy w czterech znakach, a żaden ciąg trzech znaków tego nie robi.
challenge icon

Pytanie dodatkowe

Gdy t zawiera niewiele liter, a s jest długie, większość s nigdy nie ma znaczenia. Czy możesz sprawić, by okno przeskakiwało tylko między pozycjami, w których znajduje się litera z t?

Zresetuj kod
def minWindow(s, t):
    # Napisz tutaj kod

Test #1

Test #2

Test #3

Argumenty

s = "mappingtheplan"
t = "nap"

Oczekiwany wynik

"plan"