Может кто подскажет что не так?
Вот по этому не проходит: В консоль через пробел должны выводиться все байты из файла с минимальным количеством повторов.
Вкратце суть: взял за основу свое рабочее решение для предыдущей задачи (найти байты с макс. повторами) и допилил сверху:
Так как мы уже знаем, какое количество совпадений байтов -самое большое, нам остается только доставать из базы значения и сравнивать с этим макс. значением. Если найденное меньше-то его и назначаем вместо макс. значения. В итоге прохода - макс. значение превращается в миним. значение.
Но не принимает...
package com.javarush.task.task18.task1804;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/*
Самые редкие байты
*/
public class Solution {
public static void main(String[] args) throws Exception
{
Map<Integer, Integer> map = new HashMap<>();
ArrayList<Integer> input_list = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine();
reader.close();
FileInputStream inputStream = new FileInputStream(s);
while (inputStream.available() > 0) {
int temp = inputStream.read();
input_list.add(temp);
}
inputStream.close();
int max_counter = 0;
int total_counter = 0;
//---------------------------Заполняем базу совпадениями------------------------------
for (int i = 0; i < input_list.size(); i++) {
int pair1 = input_list.get(i); // берем один байт
for (int j = 0; j < input_list.size(); j++) //сравниваем со всеми остальными
{
if (j != i) // любой байт из диапазона, который не на той же позиции
{
int pair2 = input_list.get(j);
if (pair2 == pair1) {
total_counter++;
}
if (j == (input_list.size() - 1)) // когда дошли до конца диапазона
{
map.put(pair1, total_counter);
if (total_counter > max_counter) //ищем, какое самое большое число совпадений
{
max_counter = total_counter;
}
total_counter = 0; //обнуляем счетчик перед началом следующего цикла
}
}
}
}
//-------------------------------------------------------------------------------------
for (Map.Entry<Integer, Integer> item : map.entrySet()) // находим байты с минимальными совпадениями
// сравнивая максимальное число(найднное в предыдущем шаге)- с текущим
{
int x = item.getValue();
if ((x < max_counter) && (x >= 2)) //берем за предположение что минимальное число совпадений 2 или больше
{
max_counter = x;
}
}
for (Map.Entry<Integer, Integer> item : map.entrySet())//печатаем найденные совпадения
{
int x = item.getValue();
if (x == max_counter) {
int y = item.getKey();
System.out.print(y + " ");
}
}
}
}