LeetCode简单题之词典中最长的单词
題目
給出一個字符串?dāng)?shù)組words組成的一本英語詞典。從中找出最長的一個單詞,該單詞是由words詞典中其他單詞逐步添加一個字母組成。若其中有多個可行的答案,則返回答案中字典序最小的單詞。
若無答案,則返回空字符串。
示例 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”。
提示:
所有輸入的字符串都只包含小寫字母。
words數(shù)組長度范圍為[1,1000]。
words[i]的長度范圍為[1,30]。
來源:力扣(LeetCode)
解題思路
??題目要求找出最長的單詞并且此單詞包含第一個字符的頭部元素必須得都在words中,如果遇到兩個長度一樣的單詞還要比較兩個單詞的ascll碼大小。這樣,我們可以在原先的words中添加上單詞的長度并與當(dāng)前單詞綁定,然后按照長度大小排序,如果長度一致再按照單詞ascll碼大小排序;排完序后再遍歷words逐一判斷words里的單詞是否符合條件。
class Solution:def longestWord(self, words: List[str]) -> str:w=set(words) #哈希原始words以便判斷最長單詞是否有效def find(word): #判斷最長單詞是否有效for i in range(1,len(word)):if word[0:i] not in w:return Falsereturn Truefor i in range(len(words)): #將單詞和它的長度綁定words[i]=[len(words[i]),words[i]]words.sort(key=lambda x:(-x[0],x[1]))for i in words:if find(i[1]):return i[1]return ''
總結(jié)
以上是生活随笔為你收集整理的LeetCode简单题之词典中最长的单词的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之寻找数组的中心下
- 下一篇: LeetCode简单题之只出现一次的数字