Встречаемость символов

  • 10
  • Недоступна
Программа запускается с одним параметром - именем файла, который содержит английский текст. Посчитать частоту встречания каждого символа. Отсортировать результат по возрастанию кода ASCII (почитать в инете). Пример: ','=44, 's'=115, 't'=116. Вывести на консоль отсортированный результат: [символ1] ча
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (165)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
10 марта, 16:56
Люди вы что? Какой set, map и treemap, зачем усложнять себе жизнь?. Тут обычным массивом int[255], задача в 7-8 строк. Сразу читает, а значение байта по индексу массива посылаем туда +1 и всё. Ну и вывести весь этот массив по i через for.
Александр19 уровень, Казань
12 марта, 12:12
int[] buffer = new int[256];
VK19 уровень, Киев
27 февраля, 10:19
отличную штуку нашел :
map.merge((char)data, 1, Integer::sum);
Если такого (char)data ключа нет даем ему значение 1 если есть увеличиваем на 1. Потом кидаем мапу в тримап и все EZ.
Irina22 уровень
26 февраля, 04:26
Сначала использовала Set для формирования существующего набора, затем TreeMap из нее с нулевыми value. А потом повторно читаем файл и заполняем наш TreeMap реальными количествами. На выводе TreeMap сам выводится отсортированным.
Irina22 уровень
26 февраля, 04:28
Можно было и без Set обойтись, очень хотелось его применить. Да и красиво получилось.
Alexey28 уровень, Минск
15 февраля, 20:30
Чего то пока даже не представляю куда копать то? :)
Николай22 уровень
25 февраля, 20:52
оставить только один поток
Ильнар20 уровень, Казань
12 февраля, 15:12
Выводить нужно только те, которые встречаются хотя бы 1 раз. а не всю ASCII таблицу.
S3R3N1TY29 уровень, Санкт-Петербург
4 февраля, 18:47
Решил через коллекции: 1. Список под Character заполняем из буфера байтов 2. SortedMap<Character, Integer> sortedMap = new TreeMap<>(); Заполняем мапу, помогая себе методом Collections.frequency(list,list.get(i)); 3. Выводим на экран
sortedMap.forEach((k,v)-> System.out.println(k+" "+v));
Чуть позже переделал без коллекций:
byte[] result = new byte[128];
        for(byte b: buffer)
            result[b]++;
//Затем в цикле правильно надо вывести(если значение больше нуля)
             System.out.println((char)i+" "+result[i]);
Lex24 уровень, Москва
5 февраля, 17:42
Массив лучше взять Int на 128 ,т.к встречаемость элемента может быть больше 127 и 255.В задании в примере есть 361...
TheDIP20 уровень, Киев
24 февраля, 20:56
Спасибо за коммент, помог ;)
CEO32 уровень
2 февраля, 13:34
Типичный пример, когда простое решение - лучшее
Vitaly Khan35 уровень
7 декабря 2018, 13:37
совсем короткая программа получается, если всю работу поручить TreeMap) но напрямую с массивом [256], конечно, производительнее...
Павел24 уровень, Москва
25 декабря 2018, 13:35
7 уровней за 20 дней?!!! Ты скипишь чтоль задачи? Или помимо сна и приема пищи только и занимаешься Рашем)
Vitaly Khan35 уровень
25 декабря 2018, 23:30
да просто комментировал задачи, которые когда-то давно решал. пробежаться по всем решенным задачам - недолго) решаю все (за весь курс 3 задачи не решил/не стал решать)
Павел24 уровень, Москва
26 декабря 2018, 14:41
Слава богу что такое решение! А то я уже думал что я с таким темпом капитан улитка)))
Denis18 уровень, Москва
16 января, 19:44
за (char)(byte) спасибо... долго тупил)
Айнур27 уровень, Москва
26 ноября 2018, 12:30
Очень долго не мог решить задачу, не принимал валидатор решение. Все время ругался на "В файле необходимо посчитать частоту встречания каждого символа и вывести результат.". Решал сначала через ThreeMap, потом переписал через массив, результат один и тот же. Затем переписал часть кода по выводу результата. Было " System.out.printf("%s %d \n", (char) i , array[i]);" сделал: "System.out.println((char) i + " " + array[i])". И чудо, валидатор принял. 3 дня мучений и 19 попыток Задача проверка на настойчивость))
Nathan2217722 уровень, Санкт-Петербург
14 ноября 2018, 16:12
А как насчет валидатор начнет принимать ну вы знаете... Решения которые работают начиная с 32 позиции в табличке ASCII? Откуда начинаются символы а не всякая дрочь типа DC1, EM, BEL и так далее? А то очень приятно вложить лишний грамм айкью чтобы сделать по человечески только чтобы выяснить с 11й проверки валидатора что от тебя ожидают ответа как будто ты идиот и не смог осилить табличку ASCII после того как тебя отправили "почитать в инете". 3 раза программу переписал думая что алгоритм из жопы а не валидатор (да, дурак признаю. легких путей не ищем вмсесто того чтобы создавать проверочный фаил и гонять его через дебаггер давайте допустим что мы обосрались в алгоритме и перепишем программу заного, это на мне). Алсо, что не так с тем чтобы использовать Files.readAllBytyes??? нет типа это не самое умное решение , но тем не менее.
Constantine22 уровень
20 января, 20:49
:))) Ну, ежели нет идеальных людей, то почему должны быть идеальные валидаторы? Эмоции всем присутствующим знакомы :))))))), но я полагаю, что именно не совершенный валидатор добавляет к количеству нашего прочтения как и проверок