Supongamos que tengo una cadena generada aleatoriamente s=t&^%JHGgfdteam*&HGEdfg
, ¿cuál es el mejor enfoque para contar el número de palabras en inglés en esa cadena? (Palabras en inglés como se define en algún archivo de diccionario). Obviamente, la fuerza bruta no es una buena idea ... ¿funcionaría un sufijo-tri? ¿Búsqueda binaria? Tenga en cuenta que en el caso de s
, hay dos palabras: "té" y "equipo". Alguna idea? SaludosContando palabras en inglés en una cadena aleatoria
Respuesta
Yo cargaba las palabras del diccionario en una estructura Trie, luego leo la cadena de izquierda a derecha y verifico si las subcadenas están en el trie. Si lo son y hay niños, sigue adelante. Si resultan ser una hoja o una palabra válida, agréguela al recuento de incidencias.
En pseudocódigo:
Trie dict = ... // load dictionary
Dictionary occurences = {}
for i in length(string):
j = i + 1
# think of partial as string.Substring(i, j);
while dict.hasChildren(partial):
j++
if isWord(partial):
dict[partial]++
esta manera usted garantiza que no se pierde ni un partido, mientras que todavía en busca de todas las posibilidades.
puede limitar la duración mínima de las palabras válidas cambiando lo j
se inicializa o rechazando palabras cortas en el método isWord()
(por lo a
no habría una palabra "válida").
Esto debería ser más que suficiente para empezar. ¡Gracias! –
Aho-Corasick string matching algorithm construye la estructura coincidente en el tiempo lineal en el tamaño del diccionario y coincide con los patrones en el tiempo lineal en el tamaño del texto de entrada + número de coincidencias encontradas.
+1: Un trie es bueno, pero un trie + un buen algoritmo de búsqueda es mucho mejor. –
Buen complemento. Upvoted. –
- 1. Contando palabras en una cadena - programación c
- 2. Cómo elegir una palabra aleatoria en inglés de una lista
- 3. Contando palabras en una colección usando LINQ
- 4. Contando el número de palabras en C#
- 5. Palabras en lenguaje natural en inglés
- 6. Lista de palabras "Detener palabras" para inglés?
- 7. Stemming palabras en inglés con Lucene
- 8. Generando una cadena aleatoria
- 9. ¿Qué es una buena función hash para palabras en inglés?
- 10. Invertir palabras en una cadena
- 11. ¿Cómo contar el número de letras en una cadena aleatoria?
- 12. Cadena aleatoria en plantilla django
- 13. Contando el número de palabras en un archivo
- 14. Buscar todas las subcadenas (en inglés) de una cadena determinada
- 15. Contando el número de puntos en una cadena
- 16. Contando la frecuencia de cada letra en una cadena
- 17. base de datos MySQL de palabras en inglés?
- 18. Generar una cadena aleatoria basada en una expresión regular
- 19. Validar palabras contra un diccionario de inglés en Rails?
- 20. javascript lista de palabras en inglés para un juego
- 21. ¿Cómo obtener la base de datos de palabras en inglés?
- 22. ¿Qué palabras en inglés se pueden crear usando hexadecimal?
- 23. Capitalizar palabras en una cadena usando C#
- 24. Dividir una cadena en palabras y puntuación
- 25. Cómo invertir palabras en una cadena?
- 26. Número en Inglés Raíles de Conversión de Palabras
- 27. (seguro) Cadena aleatoria?
- 28. cómo capitalizar cadena de Inglés en Emacs
- 29. Guid vs cadena aleatoria
- 30. Generar cadena UTF-8 aleatoria en Python
"am" es una palabra en inglés. – erickson
"a" es también una palabra en inglés. – paxdiablo
"ged" es también una palabra en inglés. –