Skip to content

524. 通过删除字母匹配到字典里最长单词

解题过程

INFO

题目链接 给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串

javascript
/**
 * @link https://leetcode.cn/problems/longest-word-in-dictionary-through-deleting/
 * @title 524. 通过删除字母匹配到字典里最长单词
 * @description 给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。

如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串
 * @param {string} s
 * @param {string[]} dictionary
 * @return {string}
 */
// 解法一
// 思路:根据昨晚的解题思路优化一下即可:增加一个判断当前匹配到的字符串子序列是否是最大长度且是最小字母序列
var findLongestWord = function (s, dictionary) {
  let lastStr = ''
  for (let i = 0; i < dictionary.length; i++) {
    let total = currentIndex = 0
    const targetStr = dictionary[i]

    while (total < targetStr.length && currentIndex < s.length) {
      if (targetStr[total] === s[currentIndex]) {
        total++
      }

      currentIndex++
    }

    if (total === targetStr.length) {
      if (targetStr.length === lastStr.length) {
        lastStr = targetStr > lastStr ? lastStr : targetStr
      } else {
        lastStr = targetStr.length > lastStr.length ? targetStr : lastStr
      }
    }
  }

  return lastStr
};

const result = findLongestWord('abpcplea', ["ale","apple","monkey","plea"]) // apple
console.log(result)

解题感受

今天状态不太好,太困了,没有用其他解法来做,只用了一种解法双指针思维。是昨天一题的升华版,解法是差不多的,添加多了一个判断而已

优质题解