524. 通过删除字母匹配到字典里最长单词
给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。
如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。
答案
class Solution {
public String findLongestWord(String s, List<String> dictionary) {
int dlen = dictionary.size();
String res = "";
for (int i = 0; i < dlen; i++) {
String ds = dictionary.get(i);
int slen = s.length(), dslen = ds.length();
int m = 0, n = 0;
while (m < slen && n < dslen) {
if (s.charAt(m) == ds.charAt(n)) {
m++;
n++;
} else {
m++;
}
}
if (n == dslen && dslen > res.length()) {
res = ds;
}
else if (n == dslen && dslen == res.length() && res.compareTo(ds) > 0) {
res = ds;
}
}
return res;
}
}