題目描述
給出一個字符串數組words組成的一本英語詞典。從中找出最長的一個單詞,該單詞是由words詞典中其他單詞逐步添加一個字母組成。若其中有多個可行的答案,則返回答案中字典序最小的單詞。
若無答案,則返回空字符串。
算法思路
根據題意新建字典,值屬性爲集合,可以更好的查詢。
class Solution:
def longestWord(self, words) -> str:
d=dict(zip(range(1,31),[set()for i in range(31,61)]))
words.sort(key=len)
res=set()
for i,j in enumerate(words):
if len(j)==1:
d[1].add(j)
res.add(1)
else:
if j[:-1]in d[len(j)-1]:
d[len(j)].add(j)
res.add(len(j))
return min(d[max(res)])
執行用時 :92 ms, 在所有 Python3 提交中擊敗了73.92%的用戶
內存消耗 :13.9 MB, 在所有 Python3 提交中擊敗了7.14%的用戶