天天看點

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