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.List;
import java.util.Map;
/*
Самые редкие байты
*/
public class Solution {
public static void main(String[] args) throws Exception {
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) {
String filename = bufferedReader.readLine();
Map<Byte, Integer> byteCounts = new HashMap<>();
int minCount = Integer.MAX_VALUE;
int currentByte;
try (FileInputStream fileInputStream = new FileInputStream(filename)) {
while ((currentByte = fileInputStream.read()) != -1) {
Byte byteValue = (byte) currentByte;
int count = byteCounts.getOrDefault(byteValue, 0) + 1;
byteCounts.put(byteValue, count);
if (count < minCount)
minCount = count;
}
}
List<Byte> uniqueBytes = new ArrayList<>();
for (Map.Entry<Byte, Integer> entry : byteCounts.entrySet()) {
if (entry.getValue() == minCount)
uniqueBytes.add(entry.getKey());
}
for (Byte byteValue : uniqueBytes) {
System.out.print(byteValue + " ");
}
}
}
}
не могу понять почему валидатор выводит time is Out, причем для нахождения максимума все работает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.List;
import java.util.Map;
/*
Самые редкие байты
*/
public class Solution {
public static void main(String[] args) throws Exception {
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) {
String filename = bufferedReader.readLine();
Map<Byte, Integer> byteCounts = new HashMap<>();
int minCount = Integer.MAX_VALUE;
int currentByte;
try (FileInputStream fileInputStream = new FileInputStream(filename)) {
while ((currentByte = fileInputStream.read()) != -1) {
Byte byteValue = (byte) currentByte;
int count = byteCounts.getOrDefault(byteValue, 0) + 1;
byteCounts.put(byteValue, count);
if (count < minCount)
minCount = count;
}
}
List<Byte> uniqueBytes = new ArrayList<>();
for (Map.Entry<Byte, Integer> entry : byteCounts.entrySet()) {
if (entry.getValue() == minCount)
uniqueBytes.add(entry.getKey());
}
for (Byte byteValue : uniqueBytes) {
System.out.print(byteValue + " ");
}
}
}
}