leetcode-面试题 17.15. 最长单词

题解思路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution {

public String longestWord(String[] words) {
Arrays.sort(words,(o1,o2)->{
if(o1.length() == o2.length())
return o1.compareTo(o2);
else{
return Integer.compare(o2.length(),o1.length());
}
});

Set<String> set = new HashSet<>(Arrays.asList(words));
for (String str : words) {
set.remove(str);
if (dfs(set, str)){
return str;
}
}
return "";
}

public boolean dfs(Set<String> set, String target){
if (target.length() == 0) {
return true;
}
for (int i = 0; i < target.length(); i++) {
//截取0-i的长度的子字符串
if (set.contains(target.substring(0, i + 1)) && dfs(set, target.substring(i + 1))) {
return true;
}
}
return false;
}
}