前缀树概念
计算机科学中的「前缀树(Trie)」是什么,优缺点是哪些,有什么应用场景?www.zhihu.com示例4(Longest Word in Dictionary)
给出一个字符串数组words
组成的一本英语词典。从中找出最长的一个单词,该单词是由words
词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。
若无答案,则返回空字符串。
输入:
words = ["a", "banana", "app", "appl", "ap", "apply", "apple"]
输出: "apple"
解释:
"apply"和"apple"都能由词典中的单词组成。但是"apple"得字典序小于"apply"。
思路
通过前缀树保存 words 数组,然后通过 bfs 查找符合条件的最长单词。
JavaScript 代码
/**
* @param {string[]} words
* @return {string}
*/
var longestWord = function(words) {
const trie = new Trie();
for (let i = 0; i < words.sort().length; i++) {
trie.insert(words[i]);
}
const word = findLongestWord(trie);