Прошу помощи.
Тестировал с разными файлами код. Дебагером вдоль и поперек прошелся.
Дело в том, что у меня переменную int minRepeat перезаписывает в цикле, то есть он находит минимальное значение, но потом дальше другим значением затирает и в итоге результат не тот что должен. А когда я пытаюсь сравнивать if (pair.getValue() == minRepeat) то в minRepeat сидит значение не то что нужно.
int count = 1;
int minRepeat = 0;
for (int i = 0; i < arrayList.size() - 1; i++) {
if (arrayList.get(i) == arrayList.get(i + 1)) {
++count;
hashMap.put(arrayList.get(i), count);
++minRepeat; // Здесь думаю проблема, но не уверен (возможно не только здесь %) )
if (count < minRepeat) {
minRepeat = count;
}
} else count = 1;
}
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.Collections;
import java.util.HashMap;
import java.util.Map;
/*
Самые редкие байты
*/
public class Solution {
public static void main(String[] args) throws Exception {
ArrayList<Integer> arrayList = new ArrayList<>();
HashMap<Integer, Integer> hashMap = new HashMap<>();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String text = bufferedReader.readLine();
FileInputStream fileInputStream = new FileInputStream(text);
while (fileInputStream.available() > 0) {
int file = fileInputStream.read();
arrayList.add(file);
}
Collections.sort(arrayList);
int count = 1;
int minRepeat = 0;
for (int i = 0; i < arrayList.size() - 1; i++) {
if (arrayList.get(i) == arrayList.get(i + 1)) {
++count;
hashMap.put(arrayList.get(i), count);
++minRepeat;
if (count < minRepeat) {
minRepeat = count;
}
} else count = 1;
}
for (Map.Entry<Integer, Integer> pair : hashMap.entrySet()) {
if (pair.getValue() == minRepeat) {
System.out.print(pair.getKey() + " ");
}
}
fileInputStream.close();
}
}