720. 词典中最长的单词
给出一个字符串数组 words 组成的一本英语词典。返回 words 中最长的一个单词,该单词是由 words 词典中其他单词逐步添加一个字母组成。
思路:将words放入集合中。对words中的词进行排序,按长度优先,长度相同按照单词顺序。
然后对排序后的单词进行遍历。如果该单词所有的前缀都在集合中,则输出该单词。
class Solution(object):
def longestWord(self, words):
wordset = set(words)
words.sort(key = lambda c: (-len(c), c))
for word in words:
if all(word[:k] in wordset for k in range(1, len(word))):
return word
return ""
知识点:
数组排序:
(a,b,c) < (x,y,z) 多个元素会按顺序比较,依次比较a<x b<y c<z 。
从而可以利用元组实现按多个方面排序。
通过给出 key 让数组按合适的方式升序排序。(指定reversed=True可以实现降序)
例如:
words.sort(key = lambda c: (-len(c), c))