当前位置: 面试刷题>> 通过删除字母匹配到字典里最长单词 (经典算法题500道)
### 题目描述补充
题目:给定一个字符串`s`和一个字符串数组`wordDict`,其中`wordDict`包含了一系列单词。你的任务是找到`wordDict`中可以通过从`s`中删除某些(或不删除)字符后得到的最长单词。注意,这里的“删除”操作意味着你可以从`s`中移除任意数量的字符(包括零个),但不可以改变`s`中剩余字符的顺序。如果有多个最长单词满足条件,则返回其中任意一个即可。如果无法从`s`中通过删除字符得到`wordDict`中的任何单词,则返回空字符串。
### 示例
**输入**:
- `s = "abpcaea"`
- `wordDict = ["a", "ab", "abc", "aec", "bp"]`
**输出**: "ab"
**解释**: "ab" 是 "abpcaea" 的子序列,并且它是 `wordDict` 中最长的单词。
### PHP 示例代码
```php
function findLongestWord($s, $wordDict) {
$longestWord = '';
foreach ($wordDict as $word) {
$i = 0;
$j = 0;
while ($i < strlen($s) && $j < strlen($word)) {
if ($s[$i] === $word[$j]) {
$j++;
}
$i++;
}
if ($j === strlen($word) && strlen($word) > strlen($longestWord)) {
$longestWord = $word;
}
}
return $longestWord;
}
// 示例用法
$s = "abpcaea";
$wordDict = ["a", "ab", "abc", "aec", "bp"];
echo findLongestWord($s, $wordDict); // 输出: ab
```
### Python 示例代码
```python
def findLongestWord(s, wordDict):
longest_word = ''
for word in wordDict:
i, j = 0, 0
while i < len(s) and j < len(word):
if s[i] == word[j]:
j += 1
i += 1
if j == len(word) and len(word) > len(longest_word):
longest_word = word
return longest_word
# 示例用法
s = "abpcaea"
wordDict = ["a", "ab", "abc", "aec", "bp"]
print(findLongestWord(s, wordDict)) # 输出: ab
```
### JavaScript 示例代码
```javascript
function findLongestWord(s, wordDict) {
let longestWord = '';
for (let word of wordDict) {
let i = 0, j = 0;
while (i < s.length && j < word.length) {
if (s[i] === word[j]) {
j++;
}
i++;
}
if (j === word.length && word.length > longestWord.length) {
longestWord = word;
}
}
return longestWord;
}
// 示例用法
let s = "abpcaea";
let wordDict = ["a", "ab", "abc", "aec", "bp"];
console.log(findLongestWord(s, wordDict)); // 输出: ab
```
**码小课网站中有更多相关内容分享给大家学习**,希望这些示例代码和解释能帮助你理解并解答这个问题。