leetcode 720. Longest Word in Dictionary
发布日期:2025-04-05 00:07:46 浏览次数:24 分类:精选文章

本文共 1985 字,大约阅读时间需要 6 分钟。

Given a list of strings words representing an English Dictionary, find the longest word in words that can be built one character at a time by other words in words. If there is more than one possible answer, return the longest word with the smallest lexicographical order.

If there is no answer, return the empty string.

Example 1:

Input: words = ["w","wo","wor","worl", "world"]Output: "world"Explanation: The word "world" can be built one character at a time by "w", "wo", "wor", and "worl".

Example 2:

Input: words = ["a", "banana", "app", "appl", "ap", "apply", "apple"]Output: "apple"Explanation: Both "apply" and "apple" can be built from other words in the dictionary. However, "apple" is lexicographically smaller than "apply".

Note:

  • All the strings in the input will only contain lowercase letters.
  • The length of words will be in the range [1, 1000].
  • The length of words[i] will be in the range [1, 30].

排序+set解法

class Solution(object):    def longestWord(self, words):        """        :type words: List[str]        :rtype: str        """        # use greey algo        # find the most length word that can be built one character at a time by other words in words        words_set = set([""])        words.sort()        ans = ""        for word in words:            if word[:-1] in words_set:                if len(word) > len(ans):                    ans = word                words_set.add(word)        return ans

 

或者是trie:

class Node(object):    def __init__(self, val=""):        self.val = val        self.subs = collections.defaultdict(Node)class Trie(object):    def __init__(self):        self.root = Node("")        def insert(self, s):        node = self.root        for c in s:            node = node.subs[c]        node.val = s        def longest_word(self):        self.ans = ""                def dfs(node):            for k, n in node.subs.items():                if n.val:                     if len(n.val)>len(self.ans) or (len(n.val)==len(self.ans) and n.val

 

上一篇:LeetCode 74 _ Search a 2D Matrix 在二维矩阵中寻找指定数字是否存在
下一篇:LeetCode 70. 爬楼梯 计算爬楼梯共计多少种方法可达

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年05月21日 15时34分31秒