给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。
示例 1:
输入:
s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]
输出:
“apple”
示例 2:
输入:
s = “abpcplea”, d = [“a”,“b”,“c”]
输出:
“a”
思路很简单,遍历待查集合中每一个字符串,如果符合就加入到答案字符串集合中,主要问题是对答案集合进行排序,这个 要重写compare方法,记住即可。
class Solution {
public String findLongestWord(String s, List<String> d) {
ArrayList<String>arr = new ArrayList<String>();
int size = d.size();
int s_len = s.length();
for(int i=0;i<size;i++)
{
String str = d.get(i);
int str_len = str.length();
int s_p = 0;
int str_p = 0;
while(s_p<s_len&&str_p<str_len)
{
if(s.charAt(s_p)==str.charAt(str_p))
{
s_p++;
str_p++;
}
else
{
s_p++;
}
}
if(str_p==str_len)
arr.add(str);
}
if(arr.size()==0)
return "";
else
{
Collections.sort(arr,new Comparator<String>(){
@Override
public int compare(String a,String b)
{
int x = a.length();
int y = b.length();
if(x!=y)
return y-x;
else
{
int p = a.compareTo(b);
if(p>0)
return 1;
return -1;
}
}
});
return arr.get(0);
}
}
}