记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步
720. Longest Word in Dictionary 词典中最长的单词
1.统计每种长度拥有的单词数量
从1位的单词开始寻找 2位长度的单词[:-1]是否包含在1位单词中 如果包含说明这个单词可以放入next中
最后将start=next 根据2位单词 找3位 直至next中没有单词
此时ret中的就是最长单词
2.排序所有words 从短到长
set中最初放入""字符
如果word[:-1]在set中 则说明这个单词满足条件 放入set
最后排序 找到len最长的单词
def longestWord(words):
"""
:type words: List[str]
:rtype: str
"""
import collections
value = collections.defaultdict(list)
for w in words:
value[len(w)].append(w)
start = value[1]
length=1
ret = []
while start:
ret = start[:]
l = value[length+1]
next = []
for word in l:
if word[:length] in start:
next.append(word)
start = next[:]
length+=1
ret.sort()
return ret[0]
def longestWord2(words):
"""
:type words: List[str]
:rtype: str
"""
value = set([""])
for word in sorted(words):
if word[:-1] in value:
value.add(word)
return max(sorted(value),key=len)