package com.javarush.task.task18.task1803;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
/*
Самые частые байты
*/
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());
HashMap <Integer, Integer> map = new HashMap<>();
int maxRep = 0;
int count = 0;
while (fis.available() > 0) {
try {
int a = fis.read();
map.put(a, count++);
if (map.get(count) > maxRep) {
maxRep = map.get(count);
}
} catch (NullPointerException e) {}
}
for (Map.Entry entry : map.entrySet()) {
if ((Integer)entry.getValue() == maxRep) {
System.out.println(entry.getKey() + " ");
}
}
fis.close();
br.close();
}
}
Vlad Tsykin
41 уровень
Проблема в последней проверке
Решен
Комментарии (11)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Denis Kivilev Backend Developer в Qiwi
2 ноября 2019, 12:49полезный
есть методо в мапе. помещает значение если такой элемент отсутствует.
удобно и меньше кода.
+1
Marvell QA Automation Engineer
29 октября 2019, 15:16
в самом алгоритме ошибки
- count просто инкрементируется с каждым новым чтением/put в Map
для поиска ошибки рекомендую создать файл с данными и в код вставлить местами парочку волшебных строк типа
System.out.println("added a = " + a + " count =" + count);
и просто смотреть вывод , что происходит
сама идея алгоритма верна, немного доработать и будет порядок
- куда смотреть - нужно инкрементить значение которое уже есть в Map, если оно там есть
если нет то 1
0
Vlad Tsykin
29 октября 2019, 15:24
типа этого?
0
Marvell QA Automation Engineer
29 октября 2019, 15:33
не совсем
строка map.put(a, count); - сразу после чтения из файла не пойдет
алгоритм :
- считали данные
- проверили есть ли в Map данный Integer(как ключ)
- если есть, то вытянуть из map сколько раз он был уже до этого, увеличить на один и засунуть назад в map
- если нету запихнуть в map с 1
(можно паралельно искать макс к-во вхождений либо после отдельным цыклом )
Попробуйте тестить свое приложение с реальными данными и выводом в консоль будет легче да и понимание yлyчшитьcя что и где происходит
0
Vlad Tsykin
29 октября 2019, 16:04
вывод верный, но не принимает 3 условие
0
Marvell QA Automation Engineer
29 октября 2019, 18:23решение
если map.containsKey(a) , то count = map.get(Integer.valueOf(a)); потом count++ и так в map назад пихать
+2
Marvell QA Automation Engineer
30 октября 2019, 07:27
пересмотри след код, может поможет
0
Vlad Tsykin
30 октября 2019, 13:27
сделал так :
все прошло, большое спасибо за помощь)) +2
Ksenia Volkova Java Developer в DXC Master
29 октября 2019, 14:52полезный
count - это же счетчик, зачем ты пытаешься его использовать как ключ?
И потом, он у тебя сквозной, нигде не обнуляется...
+1
Vlad Tsykin
29 октября 2019, 14:55
как мне тогда построить условие?
0
Ksenia Volkova Java Developer в DXC Master
29 октября 2019, 15:14
Для maxRep? По идее просто (count > maxRep)
Но главное пересмотреть само заполнение словаря - чтобы там правильные значения были.
0