Проблема :
У меня тр ie в python. У меня также есть список слов, которые мне нужно найти в моем tr ie и вернуть все совпадения.
Но в моем списке слова не определены правильно, что означает, что некоторые буквы / символы могут быть любыми символами. Например: «airp ??? e», «sh ?? t», «e? R? R». Звездочка означает, что я могу поместить туда любой символ, если слово будет иметь смысл (tr ie построен на основе словаря).
Мое неполное решение :
Пока мне удалось создать обычный tr ie, который может проверять, существует ли слово или нет. Но я застрял, поскольку понятия не имею, как обращаться с персонажем «может быть что угодно». Пропустить одну букву, это было бы решением, но если с этого момента будет много ветвей, я не уверен, как их все обрабатывать.
Вот мой код на данный момент:
class Trie:
def __init__(self):
self.root={"*":"*"}
def add_word(self, word):
curr_node=self.root
for letter in word:
if letter not in curr_node:
curr_node[letter]={}
curr_node=curr_node[letter]
curr_node["*"]="*"
def does_word_exist(self, word):
curr_node=self.root
for letter in word:
if letter not in curr_node:
return False
curr_node=curr_node[letter]
return "*" in curr_node:
Может пожалуйста, укажите мне, как двигаться дальше.
Конечно, для моей проблемы в результате мне потребуется вернуть список, содержащий все слова, соответствующие критериям поиска, а не только двоичный результат True / False.