public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name = reader.readLine();
FileInputStream fileInputStream = new FileInputStream(name);
byte[] bytes = new byte[256];
while (fileInputStream.available() > 0){
bytes[fileInputStream.read()]++;
}
int max = 0;
for (int i = 0; i < bytes.length; i++){
if (max < bytes[i]){
max = bytes[i];
}
}
for (int i = 0; i < bytes.length; i++){
if ( max == bytes[i]){
System.out.print(i + " ");
}
}
reader.close();
fileInputStream.close();
}
}
Vetrov_Milka
33 уровень
Пожалуйста объясните как это работает
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
22 марта 2021, 10:00
1) считывает данные с файла
2) помещает прочитанные байты в массив
3) ищет элемент массива с максимальным значением
4) выводит все элементы, значение которых == максимальному
5) закрывает потоки
+1
Vetrov_Milka
22 марта 2021, 10:05
В целом мне было все понятно, я не понимаю именно значение некоторый строк и их логики.
1) как вообще выглядят байты, которые мы записываем? это число от 0 до 9? Как символы конвертируются в байты?
2) Зачем мы в цикле
Увеличиваем байт в определенной ячейке
3) Не понимаю как именно происходит выявление байта который повторяется слишком много раз
Возможно много глупых вопросов, но я хочу полностью разобраться
0
hidden #2322530
22 марта 2021, 10:54решение
1) как вообще выглядят байты, которые мы записываем? это число от 0 до 9? Как символы конвертируются в байты?
погубил на тему ASCII Table
2) индекс элемента = номер байта. встретили ещё один байт, увеличили значение на 1
3) Не понимаю как именно происходит выявление байта который повторяется слишком много раз
элементарная задача по поиску максимума в массиве.
+2