考慮基於單詞查詢樹(trie)結構解決該問題.由於所有的輸入字串中只包含小寫字母,因此我們可以使用r向單詞查詢樹結構,其中r=26.
基於單詞查詢樹,我們可以使用深度優先搜尋方法搜尋所有由其他單詞逐步新增乙個字母所構成的單詞,並返回長度最長的字串(相同長度下,返回字典序最小的字串).
在單詞查詢樹中如何搜尋所有由其他單詞逐步新增乙個字母所構成的單詞?如果當前單詞是某一單詞的結尾,則該單詞是由其他單詞逐步新增乙個字母所構長的單詞,我們進一步遞迴搜尋該單詞所有不為空的鏈結;如果當前字元不是某一單詞的結尾,則其後的所有單詞均不符合要求.(由其他單詞逐步新增乙個字母所構成).我們可以使用乙個布林變數來標記當前節點是否是某一單詞的結尾.
class
solution
}private node root;
//向單詞查詢樹中插入單詞word
private node insertword
(node x, string word,
int d)
char c = word.
charat
(d);
x.next[c-
'a']
=insertword
(x.next[c-
'a']
, word, d+1)
;return x;
}//儲存所有由逐步新增乙個字母組成的單詞
private
void
findlongeststring
(node x, string curstr, list
list)}}
public string longestword
(string[
] words)
}
LeetCode 720 詞典中最長的單詞
給出乙個字串陣列words組成的一本英語詞典。從中找出最長的乙個單詞,該單詞是由words詞典中其他單詞逐步新增乙個字母組成。若其中有多個可行的答案,則返回答案中字典序最小的單詞。若無答案,則返回空字串。注意 所有輸入的字串都只包含小寫字母。words陣列長度範圍為 1,1000 words i 的...
LeetCode 720 詞典中最長的單詞
給出乙個字串陣列words組成的一本英語詞典。從中找出最長的乙個單詞,該單詞是由words詞典中其他單詞逐步新增乙個字母組成。若其中有多個可行的答案,則返回答案中字典序最小的單詞。若無答案,則返回空字串。示例 1 輸入 words w wo wor worl world 輸出 world 解釋 單詞...
詞典中最長的單詞
給出乙個字串陣列words組成的一本英語詞典。從中找出最長的乙個單詞,該單詞是由words詞典中其他單詞逐步新增乙個字母組成。若其中有多個可行的答案,則返回答案中字典序最小的單詞。若無答案,則返回空字串。解答 1.先建立字典樹,字典樹建立時,同乙個父節點下,根據字母的assic 碼判斷子節點字母先後...