Проблема для справки: https://leetcode.com/problems/implement ... eeобразной Однако во время одного из испытаний подчинения, где вход < /p>
["Trie","startsWith"]
[[],["a"]]
Ожидаемый ответ [null, false] , в то время как мой ответ возвращался [null, true] . Однако, просмотрев свой код, я был уверен, что моя логика верна, и она должна была вернуть False.
после дальнейшей отладки, добавив представление печати и распечатав входные данные, я понял, что, несмотря на ввод вопроса, не имеющий никакого вставки, на самом деле он передается в Trie с App и Apple , предположительно, из предыдущего тестового примера
и Apple . Из комментариев, упоминающих аналогичную проблему, и выпуск GitHub по адресу https://github.com/leetcode-feedback/le ... ssues/6108, который был закрыт, даже если проблема все еще существует.
Смешно, если я пытаюсь выполнить тот же самый код и тестовый случай, используя режим Depugger leetcode, он возвращается в режиме leetcode. /> Хотя я почти уверен, что это что -то не так с LeetCode, эта проблема не возникает, когда я пытался использовать вставку в принятом решении других пользователей. Это означает, что, вероятно, что -то не так с LeetCode, и что -то не так с моим кодом, чтобы воспроизвести эту конкретную ошибку.from collections import deque
class Trie:
def __init__(self, children = {}, value = '', is_terminal = False):
self.children = children
self.value = value
self.is_terminal = is_terminal
def __str__(self):
s = ''
s += self.value
queue = deque([])
for child in self.children.values():
queue.append(child)
while queue:
node = queue.popleft()
s += node.value
if node.is_terminal:
s += 'T'
for child in node.children.values():
queue.append(child)
return s
def __repr__(self):
return self.__str__()
def get_child(self, val) -> "Trie":
return self.children[val]
def has_child(self, val) -> bool:
return val in self.children
def set_terminal(self) -> None:
self.is_terminal = True
def insert(self, word: str) -> None:
node = self
for char in word:
if not node.has_child(char):
new = Trie({}, char, False)
node.children[char] = new
node = node.get_child(char)
node.set_terminal()
def search(self, word: str) -> bool:
node = self
for char in word:
if not node.has_child(char):
return False
node = node.get_child(char)
return node.is_terminal
def startsWith(self, prefix: str) -> bool:
print(self). # this returns appTleT
node = self
for char in prefix:
if not node.has_child(char):
return False
node = node.get_child(char)
return True
Подробнее здесь: https://stackoverflow.com/questions/796 ... -test-case
LeetCode Python 208 - Память не очищается от предыдущего тестового примера? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
LeetCode Python 208 - Память не очищается от предыдущего тестового примера?
Anonymous » » в форуме Python - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-