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

  • 10
  • Недоступна
Программа запускается с одним параметром - именем файла, который содержит английский текст. Посчитать частоту встречания каждого символа. Отсортировать результат по возрастанию кода ASCII (почитать в инете). Пример: ','=44, 's'=115, 't'=116. Вывести на консоль отсортированный результат: [символ1] ча
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (191)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Nordis23 уровень, Санкт-Петербург
позавчера, 15:21
код ASCII - Тут Ну я и напарился с этой задачей. Столько когда переписал , ужас блин. Оказалось всё проще , чем я мудрил. Подсказка : map.get(key) -> return value ! (я совсем забыл про это. И сильно парился.) Ток я понял , зачем код ASCII и по возрастанию , бла - бла - бла. Всё прошло и так. Но нужно учитывать все - > пробелы , переносы строк , начало строки , конец строки , короче всё всё всё.
Василий18 уровень, Санкт-Петербург
суббота, 17:33
Если решаете через BufferedReader и readLine, то имейте ввиду, что readLine съедает переносы строки, а они тоже являются символами.
Alexey Matias19 уровень, Санкт-Петербург
30 июня, 19:12
Решал через new int[256] и вывод через (char). Надо бы разобраться, как это сделать не по одному байту.
Ivan20 уровень
9 июля, 13:26
Прогнал текст 27000 знаков с использованием буфера и без и получил 1-2 мс и 110-120мс соответственно. то есть между
while(fileWriter.available()>0)
        {
            ascii[fileWriter.read()]++;
        }
и
byte [] buffer = new byte[fileWriter.available()];
        fileWriter.read(buffer);
        for (int i =0; i<buffer.length;i++)
        {
            ascii[buffer[i]]++;
        }
разница в производительности приличная, хотя кода стало больше :)
Павел19 уровень, Санкт-Петербург
21 июня, 19:38
http://prntscr.com/o50kxp пожалуйста побъясните по шагам как тут все поисходит?? каким образовв вообще в J у нас появились номера байтов и к томуже по одному, и каким образом буффер[i] у нас так все четко сложилось??? и где тут хоть намек на ASCII таблицу..... хотя все приняло
Павел19 уровень, Санкт-Петербург
21 июня, 19:40
типо read() у класса FileInputStream сортирует и считает сразу сколько одинаков байтов, и когда он доходит до следующего нового порядкового байта инкремент сбрасывается? так что ли по логике?
maxim19 уровень
19 июня, 12:12
Задача поставила "раком" и напрочь отбила желание двигаться дальше. Когда нашел силы вернуться спустя 1.5 месяца, понял что забыл вообще всё! Даже то, что не знал. Друзья, не останавливайтесь ни на день. Уж лучше 30 минут каждый день, но регулярно. Иначе ничего не получится.
Oleg Zaytsev24 уровень
17 мая, 20:25
чи да
Junior19 уровень
9 мая, 05:31
Перевод каретки и прочие служебные символы НУЖНО учитывать
Riccio30 уровень, Москва
4 мая, 19:21
Если символ не встречается (0), то выводить его не надо.
fedor20 уровень, Москва
24 апреля, 13:44
не совсем понял, на чем посыпался народ. Уже обсуждались реализации на основе
int[] arrByte = new int[127]; //тут сортировать уже ничего не нужно,
//просто прогони циклом весь массив с 0 до 127, массив хранит количество повторов
//вывод при условии arrByte[i] != 0
Oleg Zubkov22 уровень, Москва
21 апреля, 10:33
Вдруг кому поможет: у меня валидатор не принимал задачу, пока не ушёл от Collections.frequency в сторону ручного создания метода для обычного массива. Это конечно может правильно, типа экономия ресурсов, но всё ж оба подхода выдают одинаковый результат.