Volver a los desafíos
Difícil 0 resueltos 0% de aceptación

Minimum Window Substring

Find the shortest piece of text containing all required characters.

Lo que aprenderás

  • Ampliar y reducir una ventana sobre el texto
  • Seguir los caracteres necesarios
  • Encontrar la ventana válida más corta

Problema

Find the shortest contiguous substring of text that contains every character of pattern, including repeats. If several are equally short, return the leftmost.

Implement min_window(text, pattern).

Input

text: The text to search. pattern: The characters that must appear.

Output

Return the shortest window, or an empty string if none exists.

Restricciones

1 ≤ length of text, pattern ≤ 100,000 (ASCII)

Ejemplos

Ejemplo 1
Entrada:
text = "ADOBECODEBANC"
pattern = "ABC"

Salida esperada:
expected = "BANC"
Entrada:
std::string text = "ADOBECODEBANC";
std::string pattern = "ABC";

Salida esperada:
std::string expected = "BANC";
Entrada:
string text = "ADOBECODEBANC";
string pattern = "ABC";

Salida esperada:
string expected = "BANC";

Explicación

"BANC" contains A, B and C and nothing shorter does.

Ejemplo 2
Entrada:
text = "a"
pattern = "aa"

Salida esperada:
expected = ""
Entrada:
std::string text = "a";
std::string pattern = "aa";

Salida esperada:
std::string expected = "";
Entrada:
string text = "a";
string pattern = "aa";

Salida esperada:
string expected = "";

Explicación

Two a's are needed but the text has only one: "".

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

La ventana debe cubrir todos los conteos necesarios de caracteres, no solo los distintos.

Pista 2

Expande hasta que sea válida y luego contrae por la izquierda para quitar caracteres innecesarios sin dejar de ser válida.

Pista 3

Si varias ventanas tienen la misma longitud mínima, conserva la más temprana al actualizar la mejor respuesta.

Complejidad esperada

tiempo O(n), espacio extra O(1)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.