-
Notifications
You must be signed in to change notification settings - Fork 0
Simulacro 01 Minimum Window Substring
Joel Alvarez edited this page Jul 12, 2026
·
1 revision
Practicar hashing + sliding window bajo límite de tiempo, explicando invariantes y casos borde antes de codificar.
Duración total: 45 minutos.
- No consultar
src/patterns/sliding_window.rsantes de terminar. - Escribir primero los casos de prueba.
- Explicar el enfoque antes de codificar.
- Al terminar, registrar retro en
notes/review-queue.md.
Dadas dos cadenas source y target, devolver la subcadena más corta de source que contenga todos los caracteres de target, respetando multiplicidad.
Si no existe una ventana válida, devolver una cadena vacía.
source = "ADOBECODEBANC"
target = "ABC"
resultado = "BANC"
source = "a"
target = "a"
resultado = "a"
source = "a"
target = "aa"
resultado = ""
Antes de codificar, responder:
- ¿Importa la multiplicidad de caracteres?
- ¿Qué debe pasar si
targetestá vacío? - ¿La comparación distingue mayúsculas y minúsculas?
- ¿Qué tipo de caracteres se espera manejar?
- Contar caracteres requeridos en
target. - Expandir
rightpara incluir caracteres desource. - Mantener cuántos caracteres requeridos siguen faltando.
- Cuando la ventana sea válida, contraer
leftmientras siga siendo válida. - Guardar la mejor ventana vista.
-
missing == 0significa que la ventana actual cubretarget. - El mapa de conteos indica cuántas apariciones faltan o sobran dentro de la ventana.
- Solo se puede mover
leftcon cuidado: si al sacar un carácter requerido vuelve a faltar, la ventana deja de ser válida.
Crear o reescribir tests equivalentes a:
#[test]
fn returns_shortest_substring_covering_target_counts() {
assert_eq!(min_window("ADOBECODEBANC", "ABC"), "BANC");
}
#[test]
fn returns_empty_when_target_cannot_be_covered() {
assert_eq!(min_window("a", "aa"), "");
}
#[test]
fn handles_single_character_match() {
assert_eq!(min_window("a", "a"), "a");
}- Complejidad temporal: O(n + m).
- Complejidad espacial: O(k), donde
kes el número de caracteres distintos relevantes. - No reconstruye substrings en cada paso.
- No pierde multiplicidad cuando
targetcontiene caracteres repetidos.
Completar:
| Dimensión | Puntaje 1-5 | Evidencia |
|---|---|---|
| Clarificación | ||
| Enfoque | ||
| Implementación | ||
| Pruebas | ||
| Comunicación |
Notas:
- Qué salió bien:
- Qué falló:
- Error que se repite:
- Acción de repaso:
- Fecha para repetir: