Самые частые байты

  • 10
  • Недоступна
Ввести с консоли имя файла. Найти байт или байты с максимальным количеством повторов. Вывести их на экран через пробел. Закрыть поток ввода-вывода.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (146)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Lyudmila Grayvoronskaya18 уровень, Одесса
четверг, 20:03
У меня была ошибка так же на внимательность :))) Я выводила символ/ы которые повторяются - а нужно БАЙТ! И того 5 попыток! Я пар раз переделывала реализацию - и все не могла понять что не так, количество и символы правильные :)))
Andrey P18 уровень, Новосибирск
3 марта, 18:49
Поставил stream.close(); в самом конце - не принимало. Оказалось, что сразу после цикла надо ставить.
Никита22 уровень, Москва
22 февраля, 05:57
Если закрыть поток чтения после вывода ответа на экран, то валидацию не проходит :\
REM22 уровень, Москва
20 февраля, 14:16
+ экспа. Collections.max( "ВашаМапа".values() ); // -удобно
S3R3N1TY29 уровень, Санкт-Петербург
31 января, 18:48
Для тех кто не понял условие задачи (как и я) с первого раза, рассказываю на пальцах что от нас хотят: Допустим у нас в файле есть такой текст:
Hello world
aaaaaaaaaa
bbbbbbbbbb
test
Так вот байт, который отвечает за символ 'a' встречается 10 раз, из всего текста это максимально количество. Но и байт 'b' встречается тоже 10 раз, то есть 10=max. А теперь нам нужно вывести на экран байт(цифровое int представление) букв a и b - эти самые байты, так как они встречаются максимальное количество раз. Вывести всего два раза- то есть для данного текста ответ на консоли будет такой:
97 98
Antony.Glim26 уровень
17 февраля, 12:03
Задаче явно не хватает этого примера, или пояснения: "если разные символы встречаются в файле одинаковое количество раз, то эти символы вывести через пробел Приме: ввод: aaa bbb fff rr k s вывод: 97 98 102
Antony.Glim26 уровень
17 февраля, 12:05
в примере не учтен символ переноса строки) Именно он и будет считаться самым часто встречающимся символом)
Евгений19 уровень
9 марта, 19:24
Спасибо вам. Ей богу, чуть с ума не сошел =)
Максим19 уровень, Минск
11 марта, 19:39
Тоже на этом попался. Выводил несколько раз подряд через пробел один и тот же символ.
Евгений Ашкинадзе19 уровень, Минск
30 января, 23:09
А я сразу при чтении файла одновременно заносил в hashmap байты в виде ключа со счётом один в виде значения, а если они там уже есть, то просто увеличивал счёт. При этом в случае увеличения счёта сразу проводилась сверка с независимой переменной, где хранился последний самый большой счёт (по умолчанию ноль). Далее достаточно за один проход из мапы взять только те ключи, чей счёт в значении совпадает с той независимой переменной. Всего два цикла быстро справятся с файлом размером даже в несколько мегабайт.
Leo18 уровень, Москва
4 февраля, 12:22
тоже через мапу решал, интересно какие еще есть варианты решения сей задачи
Юрий29 уровень, Минск
29 января, 07:19
1 все прочитанные байты в коллекцию Integer 2 с помощью цикла узнаём есть ли повторы каждого элемента и заносим в коллекцию множество 3 распечатываем множество
Voffka22 уровень, Киев
22 января, 15:02
жесткач. Пришлось посмотреть на
map.forEach
из 8 джавы. Удобнее, чем было до этого.
map.forEach((key, value) -> {
            if (value >= finalCount) {
                System.out.print(key + " ");
            }
        });
где finalCount = самое большое значение Collections.frequency
Shamil20 уровень
16 февраля, 21:54
Если finalCount - самое большое значение тогда зачем там знак больше т.е. value может быть больше чем finalCount)))
Вадим27 уровень, Новосибирск
18 января, 18:58
Максимальное и более двух это одно и то же???
Aleksandr Cherkaev22 уровень
15 января, 22:29
Тем кого напрягает условие рапечать в одну строку из коллекции результатов, может пригодится этот метод: конвертим массив значений в массив строк и джойним их через пробел, можно сразу в консоль
String resultString = results.stream().map(Object::toString).collect(Collectors.joining(" "));
System.out.println(resultString);