文章目录
1. 解法
class Solution {
public String findLongestWord(String s, List<String> dictionary) {
String result = "";
for (String word : dictionary) {//遍历字典,去s中查找是否包含
int i = 0;//s的指针
int j = 0;//word的指针
while(i < s.length() && j < word.length()){
if (s.charAt(i) == word.charAt(j)){//当s的i和word的j匹配,则i和j同时向右移动一位;否则j不动,i右移一位,在s中继续寻找与word的j匹配的字母
++j;
}
++i;
}
if (j == word.length()){//如果j移动到了word的末尾,说明word是s的子列
//1. word的长度比之前找到的word(存在result)的长度长
//2. word的长度与result长度一样,并且word的字典排序小于result
if(word.length() > result.length() ||
(word.length() == result.length() && word.compareTo(result) < 0)){
result = word;
}
}
}
return result;
}
}
2. 原题 524. 通过删除字母匹配到字典里最长单词
给你一个字符串 s
和一个字符串数组 dictionary
,找出并返回 dictionary
中最长的字符串,该字符串可以通过删除 s
中的某些字符得到。
如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。
示例 1:
输入:s = "abpcplea", dictionary = ["ale","apple","monkey","plea"]
输出:"apple"
示例 2:
输入:s = "abpcplea", dictionary = ["a","b","c"]
输出:"a"
提示:
1 <= s.length <= 1000
1 <= dictionary.length <= 1000
1 <= dictionary[i].length <= 1000
s
和dictionary[i]
仅由小写英文字母组成