Поиск слабо определенных слов в дереве - PullRequest
0 голосов
/ 29 мая 2020

Проблема :

У меня тр 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...