Циклы for могут быть довольно быстрыми для очень маленьких словарей. Но если у вас есть совпадающие наборы из тысяч слов, это будет очень медленно. Предполагая, что ваш словарь отсортирован (если не отсортирован), вы можете использовать функцию BinarySearch, чтобы найти первый и последний элементы диапазона, а затем использовать цикл for для создания результатов.
Чтобы быть более практичным, у меня есть (отсортированный) словарь с 354984 словами, включая эти 35 слов, начинающихся с папы: папа, папа, дада, дадаизм, дадаизмы, дадаист, дадаист, дадаистически, дадаисты, дадап, дадас, папа сгорел, папа, папы , папа, даддл, даддл, даддл, даддлинг, папа, папа, папа, папа, папа, папочка, папа, даденхудд, дадинг, дадо, дадоед, дадо, дадоин, дадо, дадушо, папы и дадучус. Если я буду следовать подходу Джима, мне придется выполнить 35 "StartsWith", что нормально. В случае префикса "sat" у меня 228 слов, а в случае префикса "cat" у меня 692 слова. Для размера моего словаря мне нужно в общей сложности 40 сравнений строк (в худшем случае), чтобы найти первый и последний элементы.
Если вы хотите использовать любую реализацию trie, убедитесь, что она поддерживает как минимум числа и тире, если ваш словарь включает такие записи, как 1st или в реальном времени.
person
Community
schedule
10.12.2011