public class Solution {
public static void main(String[] args) {
try (FileReader fileName = new FileReader(args[0])) {
int count = 0;
Character [] alphabet = {'a', 'b', 'c', 'd', 'i', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
ArrayList<Character> alphabetList = new ArrayList<>(Arrays.asList(alphabet));
Set<Character> readFile = new HashSet<>();
while (fileName.ready()) {
readFile.add((char) fileName.read());
}
for (char letter : readFile) {
if (alphabetList.contains(Character.toLowerCase(letter))) {
count++;
}
}
System.out.println(count);
} catch (IOException e) {
e.printStackTrace();
}
}
}
трэбаЦудыЗробімЦуды
45 уровень
Решил иначе. В таком виде не проходило - подскажите, плз, почему?
Обсуждается
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Оксана
28 июня 2022, 22:22полезный
1. В Set хранятся только уникальные элементы, а нам по условию надо подсчитать все буквы, в том числе и повторяющиеся.
2. Между буквами 'd' и 'f' в английском алфавите стоит буква 'e', а не 'i'.
+1
трэбаЦудыЗробімЦуды
30 июня 2022, 16:12
Дакладана! Не ўбачыў, што двойчы напісаў "i". Здаецца ў гэтым і была прычына! Дзякуй!!!
0
Никита
26 мая 2022, 18:05
Есть решение проще и лучше, без использования сетов и массивов. Достаточно знать диапазон кодировок латинских букв. Это соответствует двум диапазонам [65 - 90] и [97 - 122]. Зная эти диапазоны можно читая в потоке из файла байты проверять входят ли они в указанные диапазоны и увеличивать счетчик.
0
трэбаЦудыЗробімЦуды
26 мая 2022, 16:40
Точно!
0
Anonymous #2963897
26 мая 2022, 12:01полезный
так в сете же не дублируются значения вроде
+1
трэбаЦудыЗробімЦуды
17 мая 2022, 16:15
Так Character.toLowerCase же - привел все к нижнему регистру. По пункту регистра задача проходила.
0
Igor Petrashevsky
17 мая 2022, 00:44
для начала, найти еще 26 букв
0