В настоящее время я использую реализацию tr ie из этого сообщения о переполнении стека:
Получение списка слов из Tr ie
для возврата список слов, которые соответствуют данному префиксу. Затем я использую регулярное выражение, чтобы отфильтровать слова, которые не соответствуют всему указанному шаблону.
EX: если шаблон, который я ищу, это: CH ?? S? и это подмножество словаря, которое соответствует моему начальному префиксу: {CHABAD, CHACHA, CHARIOT, CHATTED, CHEATER, CHOMSKY, CHANEL CHAFED, CHAFER, CHAINS, CHAIRS, CHEESE, CHEESY CHRONO, CHUTES, CHISEL}
* * Я бы искал tr ie с префиксом 'CH', а затем отфильтровал слова, которые соответствуют моему желаемому шаблону CH ?? S? (CHEESY, CHEESE, CHISEL) и верните их.
Мне интересно, есть ли более быстрый способ сделать это, чтобы избежать использования регулярного выражения в последнем шаге. Я думал, что мог бы использовать дерево суффиксов ( алгоритм дерева суффиксов Укконена в простом английском языке sh) или алгоритм Бойера-Мура, но ни тот, ни другой не работают, потому что они ищут по суффиксам, а не по шаблонам.