代码拉取完成,页面将自动刷新
# Time: O(n), n is the total sum of the lengths of words
# Space: O(t), t is the number of nodes in trie
from collections import defaultdict
from operator import getitem
class Solution(object):
def longestWord(self, words):
"""
:type words: List[str]
:rtype: str
"""
_trie = lambda: defaultdict(_trie)
trie = _trie()
for i, word in enumerate(words):
reduce(getitem, word, trie)["_end"] = i
# DFS
stack = trie.values()
result = ""
while stack:
curr = stack.pop()
if "_end" in curr:
word = words[curr["_end"]]
if len(word) > len(result) or (len(word) == len(result) and word < result):
result = word
stack += [curr[letter] for letter in curr if letter != "_end"]
return result
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。