Мне недавно задали этот вопрос во время интервью C #:
Как бы вы эффективно нашли количество вхождений слова в огромный текст, такой как большая книга (Библия, словарь и т. Д.).
Мне интересно, какова была бы наиболее эффективная структура данных для хранения содержимого книги. Самой грязной мыслью, о которой я мог подумать, было хранение ее в StringBuilder и поиск количества подстрок, ноЯ уверен, что должен быть намного лучший способ сделать это.
И для строки разумного размера есть несколько способов сделать это, используя подстроку, регулярные выражения и т. Д., Но для огромной строки, которая является наиболееэффективный способ.
Обновление: я ищу следующее:
Предполагая, что есть текстовый файл, давайте снова скажем Библию размером 20 МБ, и я хочу найти числораз слово «Иисус» встречается в тексте, за исключением загрузки всего 20 МБ в строку или StringBuilder и использования подстроки или регулярного выражения длянайти количество совпадений, есть ли другая структура данных, которая может быть использована для хранения всего текстового содержимого.Фактический поиск может быть выполнен несколькими способами, и я ищу наиболее эффективную «структуру данных» для временного хранилища.