info
Importante: Para que se registre el resultado tienes que iniciar sesión.
Algoritmo Aho-Corasick
Master100 pts·Algoritmos
Enunciado
Algoritmo Aho-Corasick
Implementa el algoritmo Aho-Corasick para búsqueda simultánea de múltiples patrones en un texto.
Dado un array de patrones y un texto, construye un autómata finito determinista (trie + enlaces de fallo) y recorre el texto una sola vez para encontrar todas las ocurrencias de todos los patrones.
Complejidad esperada
- Construcción del autómata:
O(Σ patrones) - Búsqueda:
O(n + z)dondenes la longitud del texto yzel número de coincidencias
Entrada
patterns: lista de strings (patrones a buscar)text: string donde buscar
Salida
Lista de pares [patrón, índice] con todas las ocurrencias encontradas, ordenada por índice de inicio ascendente y luego por patrón lexicográfico ascendente.
Ejemplo
aho_corasick(["he", "she", "his", "hers"], "ushers")
# => [["she", 1], ["he", 2], ["hers", 2]]
aho_corasick(["a", "aa", "aaa"], "aaaa")
# => [["a",0],["aa",0],["aaa",0],["a",1],["aa",1],["aaa",1],["a",2],["aa",2],["a",3]]
Restricciones
1 <= len(patterns) <= 1001 <= len(patterns[i]) <= 1001 <= len(text) <= 10,000- Los patrones pueden repetirse en la lista; trátalos de forma independiente
- Los caracteres son ASCII minúsculas
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 print() para depurar. Los resultados aparecen en la Consola de salida, no en el navegador.
Inicia sesión para reaccionar
Inicia sesión para reaccionar