Мне присваивался набор (без дублирования) двоичных строк с произвольной длиной и числом, и нужно выяснить, есть ли какая-либо строка, префикс другой строки. для небольшого набора и строки с малой длиной, просто, просто создайте двоичное дерево, прочитав каждую строку, всякий раз, когда я нахожу совпадение префикса, im done.but с большим количеством строк с большой длиной, этот метод не будет эффективным , просто интересно, какая будет правильная структура данных и алгоритм для этого. дерево хаффмана? пытается (дерево оснований)? или что-нибудь? Благодарю.какая структура данных для этого?
0
A
ответ
0
Я бы пошел с trie. Используя trie, вставьте все строки так, чтобы последний узел каждой строки был помечен флагом, затем для каждой строки прогуливался по его пути и проверял, установлен ли какой-либо узел на странице установленным флагом. Если да, то строка, заканчивающаяся на этом узле, является префиксом строки, которую вы анализируете.
Предполагая, что n = количество строк и k = средняя длина, вставка и анализ обоих берут O (kn).
Дерево префикса (trie с узлами длиннее одного символа) может быть более эффективным, но не столь простым в реализации.
Смежные вопросы
- 1. , какая структура данных для этого сценария hashmap
- 2. Какая структура данных подходит для этого?
- 3. Какая структура данных подходит для этого?
- 4. Какая структура данных подходит для этого описания?
- 5. Какая лучшая структура данных используется для этого?
- 6. Какая структура данных следует использовать для этого в C++
- 7. Какая структура данных лучше всего подходит для этого?
- 8. Какая структура данных и алгоритм подходят для этого?
- 9. какая структура данных используется для
- 10. Какая структура данных подходит для этих данных
- 11. Какая структура данных для использования/сохраняемость данных
- 12. Какая структура данных использовать
- 13. Java какая структура данных?
- 14. Какая структура данных лучше?
- 15. Какая структура данных это?
- 16. Какая структура данных?
- 17. Какая структура данных? - Javascript
- 18. Какая структура таблицы лучше всего подходит для этого сценария?
- 19. Какая оптимальная структура данных для дерева карт
- 20. Какая структура данных возвращает fs.get_last_version?
- 21. Какая структура данных (полный HABTM?)
- 22. Какая подходящая структура данных для сравнения файлов?
- 23. Какая структура данных используется для представления гистограммы
- 24. Какая структура данных используется для шаблонов строк?
- 25. Какая лучшая структура данных для набора слов?
- 26. Какая структура данных используется для таблицы символов?
- 27. Какая структура данных используется для неизменяемых карт?
- 28. Какая структура данных для массива битовых флагов?
- 29. Какая структура данных подходит для этой ситуации?
- 30. Какая структура данных используется для хранения абзаца?