package com.javarush.test.level18.lesson03.task04; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Objects; /* Самые редкие байты Ввести с консоли имя файла Найти байт или байты с минимальным количеством повторов Вывести их на экран через пробел Закрыть поток ввода-вывода */ public class Solution { public static void main(String[] args) throws Exception { ArrayList<Integer> array = new ArrayList<>(); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); FileInputStream iStream = new FileInputStream(reader.readLine()); while (iStream.available() > 0) { array.add(iStream.read()); } int[] repeats = new int[array.size()]; for (int i = 0; i < array.size(); i++) { int count = 0; for (Integer anArray : array) { if (Objects.equals(array.get(i), anArray)) count++; //альтернативное сравнение } repeats[i] = count; } int min = findMinRepeat(repeats); ArrayList<Integer> equalMins = new ArrayList<>(); //в этот список заносим числа, которые уже были выведены на экран int[] array1 = new int[array.size()]; //переводим список в идентичный массив for (int i = 0; i < array.size(); i++) { array1[i] = array.get(i); } for (int z = 0; z < repeats.length; z++) { //запуск массива значений if (repeats[z] == min) { //число повторений соответствует минимуму boolean x = true; //переключатель публиковали — не публиковали for (Integer equalInt : equalMins) //пробегаем числом по массиву уже введённых чисел { if (equalInt == repeats[z]) x = false; //если это число уже было введено, переключаем } if (x) { //если переключатель не был переключён (число не было введено) equalMins.add(array1[z]); //заносим число и печатаем его System.out.print(array1[z] + " "); } } } iStream.close(); } private static int findMinRepeat(int[] repeats) { int min = repeats[0]; for (int i = 0; i < repeats.length; i++) { if (min > repeats[i]) min = repeats[i]; } return min; } }
Leave A Comment