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++) { if (set.contains(target.substring(0, i + 1)) && dfs(set, target.substring(i + 1))) { return true; } } return false; } }
|