-- 双指针 - 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 ""
};