524. Longest Word in Dictionary through Deleting
Last updated
Last updated
/**
* Time complexity : O(n*x). One iteration over all strings is required.
* Here n refers to the number of strings in list d and x refers to
* average string length.
* Space complexity : O(x). result variable is used.
*/
class Solution {
public String findLongestWord(String s, List<String> d) {
String result = "";
if(s == null || d == null) {
return result;
}
for(String str: d) {
if(isSubsequence(s, str)) {
if(str.length() > result.length() ||
str.length() == result.length() && str.compareTo(result) < 0) {
result = str;
}
}
}
return result;
}
private boolean isSubsequence(String s1, String s2) {
if(s2.length() > s1.length()) {
return false;
}
int i = 0;
for(int j = 0; j < s1.length() && i < s2.length(); j++) {
if(s1.charAt(j) == s2.charAt(i)) {
i++;
}
}
return i == s2.length();
}
}