524 Longest Word in Dictionary through Deleting
Problem:
Input:
s = "abpcplea", d = ["ale","apple","monkey","plea"]
Output:
"apple"Input:
s = "abpcplea", d = ["a","b","c"]
Output:
"a"Solutions:
Last updated
Input:
s = "abpcplea", d = ["ale","apple","monkey","plea"]
Output:
"apple"Input:
s = "abpcplea", d = ["a","b","c"]
Output:
"a"Last updated
public class Solution {
public String findLongestWord(String s, List<String> d) {
Collections.sort(d, new Comparator<String>() {
public int compare(String s1, String s2) {
if (s1.length() != s2.length()) {
return s2.length() - s1.length();
}
return s1.compareTo(s2);
}
});
for (String str:d) {
if (str.length() > s.length()) {
continue;
}
if (isSub(str, s)) {
return str;
}
}
return "";
}
private boolean isSub(String s, String l) {
int j = 0;
for (int i = 0; i < l.length(); i ++) {
char c = l.charAt(i);
if (j == s.length()) {
break;
}
if (s.charAt(j) == c) {
j ++;
}
}
return j == s.length();
}
}public class Solution {
public String findLongestWord(String s, List<String> d) {
String result = "";
for (String str:d) {
if (str.length() > s.length()) {
continue;
}
int i = 0;
for (int j = 0; j < s.length(); j ++) {
if (i < str.length() && s.charAt(j) == str.charAt(i)) {
i ++;
}
}
if (i == str.length() && str.length() >= result.length()) {
if (str.length() > result.length() || str.compareTo(result) < 0) {
result = str;
}
}
}
return result;
}
}