
【解题思路】
对dictionary[ ]中的字符串按照长度越长越优先排序,如果长度相同,按照字典序排序。在排好序的dictionary中依次找到可以通过删除字符获得的字符串,并返回。
class Solution {
public String findLongestWord(String s, List<String> dictionary) {
Collections.sort(dictionary, new Comparator<String>(){
public int compare(String a, String b){
if(a.length() == b.length()) return a.compareTo(b);
return b.length() - a.length();
}
});
String ans = "";
for(String a : dictionary)
{
ans = findWord(s, a);
if(ans != "") return ans;
}
return ans;
}
public String findWord(String s, String a)
{
int i = 0, j = 0;
while(i < a.length() && j < s.length())
{
if(a.charAt(i) == s.charAt(j))
{
i++;
}
j++;
}
if(i == a.length())
{
return a;
}
else
{
return "";
}
}
}
本文介绍了一种算法,通过首先对字典中的字符串按长度和字典序排序,然后逐个检查每个字符串,找出是否可以通过删除字符得到更长的已排序字符串。这种方法可用于字符串操作和字典处理问题。
487

被折叠的 条评论
为什么被折叠?



