public static List findValidWords(List dict, char letters[]) { int[] avail = new int[26]; for (char c : letters) { int index = c - 'A'; avail[index]++; } ArrayList result = new ArrayList<>(); for (String word : dict) { int[] count = new int[26]; boolean ok = true; for (char c : word.toCharArray()) { int index = c - 'A'; count[index]++; if (count[index] > avail[index]) { ok = false; break;
i have written this code to make all arrangments of a word in a dictionary can you modifiy it so that it generates words with doublcates letters also.
so if i pass ABCD and let assume our dictionary has the word(ADD) so ADD will be one of the words in the list.
public static List<String> findValidWords(List<String> dict, char letters[]) {
int[] avail = new int[26];
for (char c : letters) {
int index = c - 'A';
avail[index]++;
}
ArrayList<String> result = new ArrayList<>();
for (String word : dict) {
int[] count = new int[26];
boolean ok = true;
for (char c : word.toCharArray()) {
int index = c - 'A';
count[index]++;
if (count[index] > avail[index]) {
ok = false;
break;
}
}
if (ok) {
result.add(word);
}
}
return result;
}
Step by step
Solved in 2 steps