Skip to content

Latest commit

 

History

History
40 lines (34 loc) · 1.32 KB

27_双指针_524. 通过删除字母匹配到字典里最长单词 .md

File metadata and controls

40 lines (34 loc) · 1.32 KB

-- 双指针 - mid 点击直达力扣

给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。

如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。

示例 1:

输入:s = "abpcplea", dictionary = ["ale","apple","monkey","plea"]
输出:"apple"
// 双指针+排序
// 通过将数组按长度从大到小进行排序
// 遍历数组,使用双指针匹配数组中的每一项是否为s的子字符串
// 找到符合题意得子项则直接返回结果
function findLongestWord(s: string, dictionary: string[]): string {
    dictionary.sort((a, b) => {
        if (a.length !== b.length) {
            return b.length - a.length
        } else {
            return a.localeCompare(b)
        }
    })

    for (const word of dictionary) {
        if (word.length > s.length) { continue  }
        let [i, j] = [0, 0]
        while (i < word.length && j < s.length) {
            if (word[i] === s[j]) {
                i++
            }
            j++
        }
        if (i === word.length) { return word }
    }
    return ""
};