题目描述
题解
被这个字典序坑死了
class Solution {
public String findLongestWord(String s, List<String> d) {
Collections.sort(d);
//先做个字典序的排序吧
int maxIndex = 0;
int maxM = -1;
for(int i = 0; i<d.size();i++)
{
if(isVaild(s,d.get(i))>maxM)
{
maxM = isVaild(s,d.get(i));
maxIndex = i;
}
}
if(maxM <= 0)
return "";
else
return d.get(maxIndex);
}
private int isVaild(String s, String t)
{
int m = s.length();
int n = t.length();
if(m<n)
return 0;
int i,j;
i = 0; j = 0;
while(i<m&&j<n)
{
if(s.charAt(i)==t.charAt(j))
{
i++;
j++;
}
else
i++;
}
if(j == n)
return n;
else
return 0;
}
}
看看参考答案
public String findLongestWord(String s, List<String> d) {
String longestWord = "";
for (String target : d) {
int l1 = longestWord.length(), l2 = target.length();
if (l1 > l2 || (l1 == l2 && longestWord.compareTo(target) < 0)) {
continue;
}
if (isValid(s, target)) {
longestWord = target;
}
}
return longestWord;
}
private boolean isValid(String s, String target) {
int i = 0, j = 0;
while (i < s.length() && j < target.length()) {
if (s.charAt(i) == target.charAt(j)) {
j++;
}
i++;
}
return j == target.length();
}