Ejercicio00:00
¿Quieres un reto mayor?
Resuelve en 20:00
info
Importante: Para que se registre el resultado tienes que iniciar sesión.
Algoritmo Z: búsqueda de patrón lineal
Master100 pts·Strings
Enunciado
Algoritmo Z: búsqueda de patrón lineal
Dada una cadena text y un patrón pattern, implementa la Z-function para encontrar todas las posiciones de inicio (índice 0) donde pattern aparece en text en tiempo O(n + m).
¿Qué es la Z-function?
Para una cadena s de longitud n, el Z-array Z[i] almacena la longitud del segmento más largo que empieza en la posición i y que coincide con un prefijo de s.
Por convención Z[0] puede ser 0 o n (en este problema se deja 0).
Algoritmo de búsqueda
- Construye la cadena concatenada
s = pattern + "$" + text(el separador"$"no debe aparecer en ninguno de los dos). - Calcula el Z-array de
s. - Toda posición
idel Z-array dondeZ[i] === pattern.lengthindica una ocurrencia entextque empieza en el índicei - pattern.length - 1.
Ejemplo
zFunction("abcabcabc", "abc") // [0, 3, 6]
zFunction("aaa", "a") // [0, 1, 2]
zFunction("hello", "xyz") // []
zFunction("aaaa", "aa") // [0, 1, 2]
Restricciones
1 ≤ text.length ≤ 100 0001 ≤ pattern.length ≤ text.length- Ambas cadenas contienen solo letras ASCII minúsculas.
- El carácter separador
"$"no aparece en ninguna de las dos cadenas. - La solución debe ser O(n + m) en tiempo y espacio.
Restriccionesexpand_more
- Dificultad: Master
- Completa todos los test cases para obtener los 100 puntos.
- No modificar la línea
exportal final del archivo. - Se recomienda evitar el uso de inteligencia artificial para que realmente tú practiques los ejercicios.
Puedes usar console.log() para depurar. Los resultados aparecen en la Consola de salida, no en el navegador.
Inicia sesión para reaccionar
Inicia sesión para reaccionar