Предположим, у меня есть случайная сгенерированная строка s=t&^%JHGgfdteam*&HGEdfg
, каков наилучший способ подсчета количества английских слов в этой строке? (Английские слова, определенные в некоторых словарных файлах). Очевидно, что грубая сила - это не очень хорошая идея ... будет ли суффикс-три? Двоичный поиск? Обратите внимание, что в случае s
есть два слова: «чай» и «команда». Любые идеи? С уважениемПодсчет английских слов в случайной строке
ответ
Я бы загрузил словарные слова в структуре Trie, затем прочитал строку слева направо и проверил, находятся ли подстроки в trie. Если они есть и есть дети, продолжайте идти. Если они оказались листом или действительным словом, добавьте к счету вхождения.
В псевдокоде:
Trie dict = ... // load dictionary
Dictionary occurences = {}
for i in length(string):
j = i + 1
# think of partial as string.Substring(i, j);
while dict.hasChildren(partial):
j++
if isWord(partial):
dict[partial]++
Таким образом, вы будете гарантировать, что это не пропустите матч в то время как все еще ищет все возможности.
Вы можете ограничить минимальную длину правильных слов, изменяя то, что j
инициализируется или отклоняя короткие слова в методе isWord()
(так a
не будет «действительным» слово).
Этого должно быть более чем достаточно для начала. Благодаря! –
Aho-Corasick string matching algorithm строит согласованную структуру во времени, линейную по размеру словаря, и соответствует шаблонам в момент времени, линейный по размеру вводимого текста + количество найденных совпадений.
+1: Трое хорошо, но хороший + алгоритм поиска лучше. –
Nice дополнения. Upvoted. –
- 1. Подсчет слов в строке?
- 2. Подсчет слов в строке
- 3. Подсчет слов в строке
- 4. Подсчет слов в строке c
- 5. Подсчет количества слов в строке?
- 6. Список слов английских существительных?
- 7. Обнаружение английских слов в тексте
- 8. Подсчет слов в строке в JAVA
- 9. Подсчет числа слов в строке в Perl
- 10. Подсчет слов в строке в NASM
- 11. Подсчет количества слов в строке в затмении
- 12. Подсчет слов в строке с использованием методов
- 13. C Программирование: подсчет длины слов в строке
- 14. Подсчет слов в строке ввода пользователем
- 15. Подсчет слов в строке с использованием словарей
- 16. Подсчет количества слов в строке php
- 17. Подсчет слов в строке из файла
- 18. C++ подсчет количества слов в строке
- 19. Методы написания новичков - подсчет слов в строке
- 20. Подсчет уникальных слов минимальной длины в строке
- 21. База данных MySQL английских слов?
- 22. placehold.it печать без английских слов
- 23. Классификация английских слов в редких и распространенных
- 24. отображения английских слов в их особых формах
- 25. Печать чисел как английских слов в C
- 26. проверки возможные английские слова в длинной случайной строке (C++)
- 27. Как найти английские слова в длинной случайной строке?
- 28. подсчет количества слов в linux
- 29. Подсчет слов в C
- 30. Подсчет слов в Википедии
"am" - это английское слово. – erickson
«a» также является английским словом. – paxdiablo
«ged» также является английским словом. –