BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String filename = br.readLine();
FileInputStream fileInputStream = new FileInputStream(filename);
ArrayList<Integer> integers = new ArrayList<>();
ArrayList<Integer> integers1 = new ArrayList<>();
int min = 0;
while (fileInputStream.available() > 0)
{
int data = fileInputStream.read();
integers.add(data);
}
fileInputStream.close();
Collections.sort(integers);
int o = 0;
for (int i = 0; i < integers.size(); i += integers1.get(o++)) {//
int minimum = 0;
for (int j = 0; j < integers.size(); j++) {
if (integers.get(i) == integers.get(j)) {
minimum++;
}
}
integers1.add(minimum);
}
System.out.println(integers1.toString());
for (int i = 0; i < integers1.size(); i++) {
min = integers1.get(0);
if (integers1.get(i) <= min) {
min = integers1.get(i);
}
}
o = 0;
for (int i = 0; i < integers.size(); i += integers1.get(o++)) {//
int minimum = 0;
for (int j = 0; j < integers.size(); j++) {
if (integers.get(i) == integers.get(j)) {
minimum++;
}
}
if (min == minimum) {
System.out.print(integers.get(i) + " ");
}
}
shlomas
39 уровень
Задание решил, однако иным способом, почему этот вариант не прошел, в чем ошибка, подскажите пожалуйста?
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергеев ВикторMaster
25 декабря 2018, 17:21
перескажите словами условие этого цикла
for (int i = 0; i < integers.size(); i += integers1.get(o++))
0
shlomas
25 декабря 2018, 17:58
К примеру в файле следующий текст: "AAAAAAAACCCBBBDDDFFF", следовательно в integers1 сохраняются все повторяющиеся элементы тоесть [8, 3, 3, 3, 3]. С каждым шагом цикла i будет соответственно [0, 8, 11, 14, 17], потом я среди integers1 нахожу минимум, после чего вывожу байты с минимальным количеством повторов.
0
Сергеев ВикторMaster
25 декабря 2018, 18:46
я немного не об этом. Вы не объяснили условие цикла, а описали планируемую логику.
1. в integers у вас все байты, а не уникальные
2. Объясните сам процесс итерации, например
Обычный цикл типа:
for (int i = 0; i < 10; i++)
создаем переменную i пока она меньше 0 на каждой итерации прибавляем единицу
0