Учитывая текст (T) и словарь (D) , как я могу найти все слова, встречающиеся в тексте?
A1. Можно предположить, что в T имеется всего несколько повторений символов, например, T на китайском языке.
A2. Итерации по D , как можно подозревать, являются дорогостоящими.Таким образом, он должен быть предварительно обработан, разбит или просто: следует избегать многократных итераций.
A3. Верхняя длина слова равна L и сравнительно мала по сравнениюк тексту.
B1. Простейшим решением может быть просто перебрать D для каждой подстроки разумной длины, которую я имею в своем T .Этот метод определенно гарантирует мне, что все слова найдены.Это, однако, кажется крайне неэффективным.
B2. Другая идея состоит в том, чтобы выполнить итерацию по тексту один раз, извлечь все символы в T в наборе и продолжить как в B1 для поиска всех слов.
B3. Этот вариант может работать как B2 , однако будет использовать / утверждать, что D в лексикографическом порядке.Это означает, что на самом деле он будет проверять слова только с одинаковыми начальными символами.Возможно, я мог бы также использовать взгляд впереди символов, следующих за моим текущим персонажем T .Я бы перебрал D только один раз, T несколько раз.Это, однако, кажется терпимым.
B4. Здесь я бы также продолжил, как в B3 , однако переупорядочив D таким образом, что более вероятно встречающиеся слова T проверены ранее.Проблема здесь: как мне узнать, какие слова встречаются чаще?Я должен был бы сначала переварить намного больше данных заранее и быть уверенным, что то, что я затем измеряю, на самом деле то, что я хочу измерять ..
Конечно, есть много других возможностей, вероятно, более сложных.Но каково современное состояние?Как можно сделать это / лучше всего подойти к этой проблеме?