雜湊 簡單 720 詞典中最長的單詞

2021-10-21 10:27:01 字數 1429 閱讀 2733

class

solution

:def

longestword

(self, words: list[

str])-

>

str:

words.sort(key=

lambda x:(-

len(x)

,x))

for w in words:

flag=

1for i in

range(1

,len

(w)+1)

:if w[

:i]not

in words:

flag=

0break

if flag:

return w

return

""

【trie】

class

solution

:def

longestword

(self, words: list[

str])-

>

str:

trie =

# 構建字首樹

for word in words:

print

(word,end=

" ")

cur = trie

for w in word:

cur = cur.setdefault(w,

)print

(trie,

len(trie)

) cur[

'#']

= word

print

(trie,

len(trie)

)# 獲得根結點

stack =

list

(trie.values())

print

(stack)

res =

''while stack:

cur = stack.pop(

)# 如果'#'存在,則表明下乙個單詞有字首單詞,若無則跳過,去兄弟節點

if'#'

in cur:

# 得到儲存的單詞

word = cur[

'#']

# 如果長度更長或者相等且字典序更小時,更新

iflen

(word)

>

len(res)or(

len(word)

==len

(res)

and word: res = word

# 向下查詢它的子結點

for i in cur:

if i!=

'#':

)return res

720 詞典中最長的單詞

給出乙個字串陣列words組成的一本英語詞典。從中找出最長的乙個單詞,該單詞是由words詞典中其他單詞逐步新增乙個字母組成。若其中有多個可行的答案,則返回答案中字典序最小的單詞。若無答案,則返回空字串。示例 1 輸入 words w wo wor worl world 輸出 world 解釋 單詞...

LeetCode 720 詞典中最長的單詞

給出乙個字串陣列words組成的一本英語詞典。從中找出最長的乙個單詞,該單詞是由words詞典中其他單詞逐步新增乙個字母組成。若其中有多個可行的答案,則返回答案中字典序最小的單詞。若無答案,則返回空字串。注意 所有輸入的字串都只包含小寫字母。words陣列長度範圍為 1,1000 words i 的...

LeetCode 720 詞典中最長的單詞

給出乙個字串陣列words組成的一本英語詞典。從中找出最長的乙個單詞,該單詞是由words詞典中其他單詞逐步新增乙個字母組成。若其中有多個可行的答案,則返回答案中字典序最小的單詞。若無答案,則返回空字串。示例 1 輸入 words w wo wor worl world 輸出 world 解釋 單詞...