import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/*
524. 通过删除字母匹配到字典里最长单词
给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。
示例 1:
输入:
s = "abpcplea", d = ["ale","apple","monkey","plea"]
输出:
"apple"
示例 2:
输入:
s = "abpcplea", d = ["a","b","c"]
输出:
"a"
说明:
所有输入的字符串只包含小写字母。
字典的大小不会超过 1000。
所有输入的字符串长度不会超过 1000
*/
public class p524 {
/*public String findLongestWord(String s, List d) {
Collections.sort(d, new Comparator() {
@Override
public int compare(String o1, String o2) {
if(o1.length()!=o2.length()){
return o2.length()-o1.length();
}
else {
int len=o1.length();
return o1.compareTo(o2);
}
}
});
String res="";
for(String str:d){
if(isChildXulie(s,str))return str;
}
return res;
}*/
public String findLongestWord(String s, List d){
String res="";
for(String str:d){
if(isChildXulie(s,str)){
int len=str.length();
if(len>res.length()){
res=str;
}
else if(len==res.length()) {
res=res.compareTo(str)>0?str:res;
}
}
}
return res;
}
public boolean isChildXulie(String s1,String s2){//判断S2是不是s1的子序列
int j=0;
for(int i=0;i
if(j
j++;
}
}
if (j==s2.length()){
return true;
}
return false;
}
}
运行结果:
注释掉的:
第二种方法:
CompareTo方法:
Comparator中Compare方法返回值:
返回值为1则交换两个值,返回值小于等于0不做交换
原文:https://www.cnblogs.com/jifeng0902/p/13295365.html