Я ищу лучшую структуру данных для следующего случая: В моем случае у меня будет тысячи строк, однако для этого примера я буду использовать два по понятным причинам. Итак, скажем, у меня есть строки «Вода» и «Уолтер», мне нужно, чтобы в букву «W» вводились обе строки, которые нужно найти, и когда «Wat» вводится «Water», чтобы быть единственным результатом. Я сделал исследование, но я все еще не совсем уверен, какая правильная структура данных для этого случая, и я не хочу ее реализовывать, если не уверен, что это будет тратить время. Так что в основном то, что я сейчас думаю, это либо «Trie», либо «Suffix Tree». Похоже, что «Trie» будет делать трюк, но, как я сказал, мне нужно быть уверенным. Кроме того, реализация не должна быть проблемой, поэтому мне просто нужно знать правильную структуру. Также не стесняйтесь сообщать мне, есть ли лучший выбор. Как вы можете догадаться, нормальные структуры, такие как Dictionary/MultiDictionary, не будут работать, так как это будет убийца памяти. Я также планирую реализовать кеш, чтобы ограничить потребление памяти. Я сожалею, что нет кода, но я надеюсь, что я получу ответ. Заранее спасибо.Структура данных для поиска строк
ответ
Вы должны связаться с пользователем Trie
. Tries являются основой для одного из самых быстрых известных алгоритмов сортировки (burstsort), он также используется для проверки орфографии и используется в приложениях, которые используют завершение текста. Вы можете увидеть детали here.
Спасибо, мой Trie отлично работает сейчас. –
Практически, если вы хотите сделать автоматическое предложение, то достаточно хранить до 3-4 символов. Я имею в виду предлагать, когда и когда пользователь вводит «a» или «ab» или «abc», и когда он набирает «abcd» или более символов, вы можете использовать map.keys, начинающиеся с «abcd», с использованием ладских выражений языка C#.
Таким образом, я предлагаю, создать карту, как: Карты < полукокса, < < Карты полукокса, Карта < полукокса, Set < строки >>>>> карты; Итак, если пользователь вводит «a», вы ищете карту [a] и найдете всех детей.
Это кажется очень непрактичным и ограничивающим, мне нужно будет реализовать свою собственную структуру, потому что она должна работать с 3-4 классами (1 аннотация). –
В принципе, если вы хотите реализовать в простой форме, то вы можете использовать конструкторы языка C#, такие как выражения lamda, для фильтрации данных на основе ваших потребностей, например:
map.keys.select (k => {return k.startsWith («user_input»);}
Не уверен в точном синтаксисе. –
BVMR
Лямбда-выражения медленны, так как они повторяют сбор, и я упомянул, что у меня будет тысячи записей. Что касается вашего сообщения => этот способ - это убийца памяти, изображение это с тысячами длинных строк, это была моя первая идея, но после некоторых вычислений она показала себя очень плохой идеей. –
- 1. Оптимальная структура данных поиска
- 2. Лучшая структура данных для поиска?
- 3. структура данных синонимов для поиска
- 4. Эффективная структура данных для поиска чисел и строк
- 5. структура данных для поиска подстроки из большого числа строк
- 6. Какая структура данных для добавления/поиска/подсчета строк?
- 7. Эффективная структура данных для поиска подстроки?
- 8. Лучшая структура данных для строк
- 9. структура данных для строк сдвига
- 10. Структура данных поиска IPv6
- 11. Структура данных для быстрого поиска клики
- 12. Структура данных/алгоритм для системы поиска информации
- 13. C++: Структура данных для быстрого поиска
- 14. структура данных для поиска слова во фразе
- 15. структура данных для поиска диапазона (повторно)
- 16. Структура данных для поиска большого числа
- 17. Правильный MySQL структура данных для полнотекстового поиска
- 18. Наилучшая структура данных для поиска записи
- 19. Структура базы данных для факсимильного поиска
- 20. Какая структура данных используется для шаблонов строк?
- 21. структура данных для подстановки на основе строк
- 22. Структура данных для удерживающих наборов сменных строк
- 23. Структура данных Java для сопоставления строк
- 24. Структура Elasticsearch для повторного поиска
- 25. Структура XML для быстрого поиска
- 26. структура данных алгоритмов для поиска в базу данных
- 27. Структура данных C++ для комбинирования поиска и упорядоченных данных
- 28. C++: структура данных для эффективной вставки и поиска пользовательских данных
- 29. Структура данных для таблицы?
- 30. Какая структура данных используется для быстрого поиска? (C#)
Похоже, вы хотите создать какую-то функцию автозаполнения. Я бы посмотрел, есть ли что-то уже существующее, которое вы могли бы использовать, вместо того, чтобы кататься самостоятельно. – Tim
Планируете ли вы использовать дженерики? –
Мое дело немного конкретное, и я не мог найти ничего, что сделает трюк. Это объяснение здесь очень мелкое. –