天天看点

python技巧:数组排序sort,all方法

​​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))