Tengo una larga lista de palabras y quiero mostrar palabras comenzando con el texto ingresado por el usuario. A medida que el usuario introduce un personaje, la aplicación debería actualizar la lista mostrada al usuario. Debería ser como AutoCompleteTextView en Android. Solo tengo curiosidad sobre la mejor estructura de datos para almacenar las palabras, de modo que la búsqueda sea muy rápida.¿Cuál es la mejor estructura de datos para autocompletar texto?
Respuesta
Se puede usar un trie. http://en.wikipedia.org/wiki/Triehttps://stackoverflow.com/search?q=trie
Un buen artículo - http://www.sarathlakshman.com/2011/03/03/implementing-autocomplete-with-trie-data-structure/
PS: Si usted tiene algunas sub-secuencias que "no se ramifican" entonces es posible ahorrar espacio mediante el uso de un trie por residuos, que es una aplicación que pone varios trie personajes de nodo cuando sea posible - http://en.wikipedia.org/wiki/Radix_tree
Se pueden encontrar este interesante hilo:
No es exactamente lo que quiere, sino que es una versión ligeramente extendida de su problema.
Para la implementación de la función de autocompletar, también se utilizan los árboles de búsqueda ternarios (TST):
http://igoro.com/archive/efficient-auto-complete-with-a-ternary-search-tree/
Sin embargo, si usted quiere encontrar cualquier subcadena dentro de una cadena aleatoria, pruebe con un árbol de sufijos generalizado.
Tries (y sus diversas variedades) son útiles aquí. Un tratamiento más detallado sobre este tema está en este paper. ¿Tal vez pueda implementar un trie de compleción para Android?
- 1. Cuál es el mejor algoritmo de autocompletar/sugerir, estructura de datos [C++/C]
- 2. ¿Cuál es la mejor estructura de datos adecuada para implementar editor como bloc de notas?
- 3. Java - ¿Cuál es la mejor estructura de implementación para Graph?
- 4. ¿Cuál es la mejor estructura para un proyecto Android SVN?
- 5. A * ¿cuál es la mejor estructura de datos para el conjunto abierto?
- 6. ¿la mejor estructura de datos para datos multidimensionales?
- 7. ¿Cuál es la mejor estructura de solución MVC3?
- 8. ¿Cuál es la mejor estructura de datos para representar un tablero de damas cuando la velocidad es la principal preocupación?
- 9. ¿La mejor estructura de datos para implementar un diccionario?
- 10. ¿Cuál es la mejor manera de almacenar datos de área para una aventura de texto?
- 11. ¿Cuál es la "mejor" base de datos para incrustado?
- 12. Estructura de datos mejor y más simple
- 13. JAVA - La mejor estructura de datos adecuada
- 14. ¿Cuál es la mejor práctica para organizar la estructura de carpetas de prueba de Ruby?
- 15. Estructura de datos utilizada para la estructura de directorios?
- 16. ¿Cuál es el mejor editor de texto enriquecido para jQuery?
- 17. ¿Cuál es la biblioteca de estructura de datos de colección genérica más popular para C?
- 18. Cuál es la mejor IDE alternativa para Delphi (.NET)
- 19. ¿Cuál es la mejor manera de traducir una gran cantidad de datos de texto?
- 20. ¿Cuál es la mejor manera de almacenar datos de tendencia?
- 21. Estructura de la base de datos para estructura de datos de árbol
- 22. Mejor estructura de datos para los datos de la serie temporal
- 23. ¿Cuál es la mejor base de datos de objetos Java?
- 24. ¿Cuál es la mejor manera de validar datos en mongo?
- 25. Mejor estructura de base de datos para almacenar feeds RSS
- 26. ¿Cuál es la mejor manera de leer un archivo de texto delimitado por tabulaciones en C#
- 27. cuál es el mejor IDE para autocompletar el ayudante en el marco de torta
- 28. mejor estructura de datos STL para encontrar elementos desordenados
- 29. Estructura de datos para el editor de texto
- 30. ¿Cuál es la mejor manera de migrar datos en django
Creo que una tabla hash sería lo mejor. No estoy seguro del idioma o la plataforma que está utilizando, por lo que, en general, las tablas hash son rápidas y dinámicas. – c0d3Junk13
bien ... primero necesitamos saber la plataforma con la que está trabajando. ¿Androide? iOS? Windows? Linux? OSX? ¿Web o HTML? –
@ c0d3Junk13 ¿Cómo buscaría cadenas con un prefijo dado en una tabla hash? – delnan