# 720. 词典中最长的单词

TIP

给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。

若无答案,则返回空字符串。

# 示例

输入:
words = ["w","wo","wor","worl", "world"]
输出:"world"
解释: 
单词"world"可由"w", "wo", "wor", 和 "worl"添加一个字母组成。

输入:
words = ["a", "banana", "app", "appl", "ap", "apply", "apple"]
输出:"apple"
解释:
"apply""apple"都能由词典中的单词组成。但是"apple"的字典序小于"apply"
1
2
3
4
5
6
7
8
9
10
11

# 解答

  1. 自己的答案
/**
 * @param {string[]} words
 * @return {string}
 */
var longestWord = function(words) {
    let result = []
    let j=1
    for(let i=0;i<words.length;i++) {
        while(j<words.length) {
            if(words[j].length - words[i].length===1 && words[j].includes(words[i])) {
                result.push(words[j])
            }
            j++
        }
        j=1
    }
   let map = new Map()
   for(let i of result) {
       if(map.has(i.length)) {
           if(map.get(i.length) > i) {
               map.set(i.length,i)
           }
       } else {
           map.set(i.length,i)
       }
   }
   return map.get(Math.max(...map.keys()))
// console.log(map.keys())
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29