в задаче хард почему нельзя public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
FileInputStream fis = new FileInputStream(br.readLine());
Map<Integer,Integer> list = new HashMap<>();
int current = 0;
while (fis.available() > 0) {
current = fis.read();
list.put(current, list.getOrDefault(current, 0) + 1);
}
fis.close();
br.close();
int max = Collections.max(list.values());
for (var entry : list.entrySet()) {
if (entry.getValue() == max) {
System.out.print(entry.getKey() + " ");
}
}
}
} ??? походу хочет только чтобы было как в ответе(
• Использование available() вместо проверки (read() != -1) не гарантирует корректное чтение всего файла,
• Использование конструкций, не поддерживаемых требуемой версией Java, или отклонения от заданного формата решения могут стать причиной неверного результата по стандартам проверки.
Чтобы привести ваш код к официальному решению (а значит, чтобы его приняли в задаче «Хард»), следует:
• Заменить условие чтения файла на:
int current;
while ((current = fis.read()) != -1) {
list.put(current, list.getOrDefault(current, 0) + 1);
}
• Если требуется работать в Java 8, использовать вместо var явный тип, например, Map.Entry<Integer, Integer>.
Также можно рассмотреть вариант с использованием массива размером 256 для подсчета частоты каждого байта, что часто встречается в подобных задачах.
Таким образом, хотя логика вашего кода в целом верна, именно эти детали (с available(), стилем и форматом) являются причиной, почему решение не принимается в задаче «Хард».
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ