#java #arrays #set
Вопрос:
Я пишу на языке программирования Java.
Цель этого кода состоит в том, чтобы пройти через набор и вернуть массив всех наборов слов, содержащих двойные буквы (для каждой буквы алфавита должно быть по одной).
Это код, который у меня есть до сих пор, прямо сейчас он возвращает число 23, когда должно быть 26 (опять же, для каждой буквы алфавита). Любые указания о том, что я делаю неправильно, были бы так полезны!
/** * Returns an array of all sets of words containing double letters, * one set for each letter of the alphabet. There should be a set * for all words containing "aa", one for "bb", etc. * @param words set of words * @return array of sets, one for each doubled letter in the alphabet */ public Setlt;Stringgt;[] allWordSetsContainingDoubleLetters(Setlt;Stringgt; words) { Setlt;Stringgt; sets[] = new HashSet[26]; int count = 0; for (String word : words) { String lowerCase = word.toLowerCase(); for (int i = 0; i lt;= sets.length; i ) { char c = (char) ('a' i); String str = "" c c; if (lowerCase.contains(str)) { if (sets[i] == null) { sets[i] = new HashSetlt;Stringgt;(); count ; } sets[i].add(word); } } } Setlt;Stringgt; result[] = new HashSet[count]; count = 0; for (Setlt;Stringgt; s : sets) { if (s != null) { result[count ] = s; } } return result; }
Комментарии:
1.
i lt;= sets.length
похоже на потенциальную ошибку за пределами допустимого.