Вот еще один подход, использующий Collection.remove(Object o)
, который возвращает логическое значение:
private static boolean canBeDoneWith(String word, List<Character> chars) {
List<Character> temp = new ArrayList<>(chars);
for (char c: word.toCharArray()) {
if (!temp.remove(Character.valueOf(c))) {
return false;
}
}
return true;
}
Метод find
становится:
public Set<String> find(List<Character> chars) {
Set<String> result = new HashSet<>();
for (String word: words) {
if (canBeDoneWith(word, chars)) {
result.add(word);
}
}
return result;
}