Попробовал несколько разных решений этой задачи. И с помощью frequency и с помощью только циклов. И с пробелом при выводе и без. И с println в конце и без. Проверяю на текстовом файлике который содержит следующий текст "111112222". Все работает. Два байта 49 и 50 по два раза повторяются и выводятся. Но валидатору этого мало.
package com.javarush.task.task18.task1803;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
/*
Самые частые байты
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream stream = new FileInputStream(reader.readLine());
int max = 0;
ArrayList<Integer> list = new ArrayList();
ArrayList<Integer> countMax = new ArrayList();
// читаем файл
while (stream.read() > 0) {
list.add(stream.read());
}
stream.close();
// вычисляем максимальное количество повторений байта
for (int i = 0; i < list.size(); i++) {
if (Collections.frequency(list,list.get(i)) > max) {
max = Collections.frequency(list,list.get(i));
}
}
// определяем количество байтов с максимальным количеством повторений
for (int i = 0; i <list.size() ; i++) {
if ((max == Collections.frequency(list,list.get(i))) && (Collections.frequency(countMax,list.get(i)) == 0)) {
countMax.add(list.get(i));
}
}
// вывод
for (int i = 0; i < countMax.size(); i++) {
if (i == 0) System.out.print(countMax.get(i));
else System.out.print(" " + countMax.get(i));
}
System.out.println();
}
}