import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> list = new ArrayList<>();
FileInputStream fileReader = new FileInputStream(reader.readLine());
//Добавил все байты в список
while (fileReader.available() > 0) {
int data = fileReader.read();
list.add(data);
}
//посчитал повторы байтов
List<Integer> schet = new ArrayList<>();
for (int i = 0; i < list.size() - 1; i++) {
int schetchik = 1;
for (int j = 1; j < list.size(); j++) {
if (list.get(i) == list.get(j)) {
schetchik++;
} else {
continue;
}
}
schet.add(schetchik);
}
//Нашел максимальное количество повторов
int max = 0;
for (int i = 0; i < schet.size(); i++) {
if (schet.get(i) > max) {
max = schet.get(i);
}
}
//Нашел индекс элемента с максимальным количеством повторов
int index = 0;
for (int i = 0; i < schet.size(); i++) {
if (schet.get(i) == max) {
index = i;
break;
}
}
//Вывожу в консоль байты с максимальным количеством повторов через пробел в одну строку
System.out.print(list.get(index) + " ");
reader.close();
fileReader.close();
}
}
Что не так?
Если переставить sout в последний цикл, чтобы выводились все байты с одинаковым количеством повторов, то валидатор засчитывает 4 пункта задачи из 5 и пишет комент ментора о том, что не нужно выводить один и тот же байт несколько раз. А если оставить так, как я указал, то не засчитывает 2, 3 и 5 пункты задания.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.List;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> list = new ArrayList<>();
FileInputStream fileReader = new FileInputStream(reader.readLine());
//Добавил все байты в список
while (fileReader.available() > 0) {
int data = fileReader.read();
list.add(data);
}
//посчитал повторы байтов
List<Integer> schet = new ArrayList<>();
for (int i = 0; i < list.size() - 1; i++) {
int schetchik = 1;
for (int j = 1; j < list.size(); j++) {
if (list.get(i) == list.get(j)) {
schetchik++;
} else {
continue;
}
}
schet.add(schetchik);
}
//Нашел максимальное количество повторов
int max = 0;
for (int i = 0; i < schet.size(); i++) {
if (schet.get(i) > max) {
max = schet.get(i);
}
}
//Нашел индекс элемента с максимальным количеством повторов
int index = 0;
for (int i = 0; i < schet.size(); i++) {
if (schet.get(i) == max) {
index = i;
break;
}
}
//Вывожу в консоль байты с максимальным количеством повторов через пробел в одну строку
System.out.print(list.get(index) + " ");
reader.close();
fileReader.close();
}
}