720. 詞典中最長的單詞(Python)

題目

難度:★★☆☆☆
類型:字符串

給出一個字符串數(shù)組words組成的一本英語詞典。從中找出最長的一個單詞,該單詞是由words詞典中其他單詞逐步添加一個字母組成。若其中有多個可行的答案,則返回答案中字典序最小的單詞。

若無答案,則返回空字符串。

注意
所有輸入的字符串都只包含小寫字母。
words數(shù)組長度范圍為[1,1000]。
words[i]的長度范圍為[1,30]。

示例

示例 1
輸入:
words = ["w","wo","wor","worl", "world"]
輸出: "world"
解釋:
單詞"world"可由"w", "wo", "wor", 和 "worl"添加一個字母組成。

示例 2
輸入:
words = ["a", "banana", "app", "appl", "ap", "apply", "apple"]
輸出: "apple"
解釋:
"apply"和"apple"都能由詞典中的單詞組成。但是"apple"得字典序小于"apply"。

解答

這里不建議用暴力求解,我們要留意題目中的條件,所有單詞都是根據(jù)已有單詞在末尾添加一個字母組成的,根據(jù)這個原理,我們可以設(shè)計一個單詞集合,用來存儲遍歷過的所有單詞,并判斷新單詞是否由單詞集合中的單詞增加字符獲得。

class Solution:
    def longestWord(self, words) -> str:
        words.sort()
        save = set()
        res = ""
        for word in words:
            # 如果單詞通過集合中的單詞擴展而來,或者單詞只有一個字母
            if word[:-1] in save or word[:-1] == '':
                if len(word) > len(res):        # 遇到更長的單詞
                    res = word                  # 更新結(jié)果
                save.add(word)                  # 添加到單詞表
        return res

如有疑問或建議,歡迎評論區(qū)留言~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容