Разработка структуры данных добавления и поиска слов: Leetcode 211Python

Программы на Python
Anonymous
Разработка структуры данных добавления и поиска слов: Leetcode 211

Сообщение Anonymous »


В настоящее время я пытаюсь решить проблему добавления и поиска структуры данных слов в leetcode. Вопрос в следующем:

Разработайте структуру данных, которая поддерживает добавление новых слов и поиск строка соответствует любой ранее добавленной строке.

Реализовать класс WordDictionary:

WordDictionary() Инициализирует объект.

void addWord(word) Добавляет word в структуру данных, его можно сопоставить позже.

bool search(word) Возвращает true, если в структуре данных есть какая-либо строка, которая соответствует word или false в противном случае. слово может содержать точки ., где точки могут быть соответствует любой букве.

Моя стратегия:

Моя стратегия предполагает представление дерева с помощью хэш-карты вместо традиционной древовидной структуры на основе связанных списков, стремясь к повышению производительности и снижению сложности. Используя хэш-карту, мы можем быстро получить доступ к следующему узлу, не проходя через ненужные узлы, что ускоряет операции, особенно с большими наборами данных.

Например, при вставке в эту структуру таких слов, как «яблоко» и «приложение», она организуется как вложенные хэш-карты, где каждый символ в слове указывает на другую хэш-карту, представляющую следующий символ. Конец слова отмечается специальной парой ключ-значение {'end': {}}. Таким образом, мы эффективно сохраняем и ищем слова с минимальной пространственной и временной сложностью.

Мой код:

класс WordDictionary(объект): защита __init__(сам): self.map = {} Защиту addWord(я, слово): """ :введите слово: ул :rtype: Нет """ текущий = self.map для меня в слове: если я в текущем: ток = ток[я] еще: текущий [я] = {} ток = ток[я] текущий['конец'] = {} возвращаться def search(сам, слово): """ :введите слово: ул :rtype: бул """ текущий = self.map для меня в слове: если я в текущем: ток = ток[я] элиф я == '.': текущий = {ключ: значение для d в current.values() для ключа, значение в d.items()} еще: вернуть ложь если «конец» в текущем: вернуть истину вернуть ложь Решение кажется эффективным в большинстве случаев, но я столкнулся с ошибкой в ​​тестовом примере 16, который не дает правильного результата. Из-за длины тестового примера 16 особенно сложно определить, где происходит ошибка. Мне нужны советы, как найти и исправить эту логическую ошибку. Сможете ли вы помочь во всем разобраться?

Вернуться в «Python»