поэтому мне нужно написать эффективный алгоритм поиска слов с отсутствующими буквами в словаре, и я хочу набор возможных слов.
Например, если у меня есть, я могу вернуть их, те, тему, there.etc.
Мне было интересно, может ли кто-нибудь предложить некоторые структуры данных или алгоритм, который я должен использовать.
Спасибо!
EDIT: Trie слишком неэффективен и сделает его слишком медленным. Любые другие модификации идей?
UPDATE: будет до двух вопросительных знаков, и когда появятся две вопросительные знаки, они будут выполняться последовательно.
В настоящее время я использую 3 хэш-таблицы, когда это точное совпадение, 1 знак вопроса и 2 вопроса. Учитывая словарь, я использую все возможные слова. Например, если у меня есть слово WORD. я hash WORD,? ORD, W? RD, WO? D, WOR?, RD, W? D, WO?. в словарь. Затем я использую список ссылок, чтобы связать конфликты вместе. Итак, скажем, hash (W? RD) = hash (STR? NG) = 17. hashtab (17) указывает на WORD, а WORD указывает на STRING, потому что это связанный список.
Сроки при среднем поиске одного слова составляют около 2e-6s. Я стараюсь делать лучше, предпочтительно порядка 1е-9.
EDIT: я еще не рассматривал эту проблему, но потребовалось 0,5 секунды для вставки 3 м записей, и для поиска 3 м записей потребовалось 4 секунды.
Спасибо!