Правила[Одномерные массивы]44. Японская радиокомпания провела опрос N радиослушателей по вопросу: "Какое животное Вы связываете с Японией и японцами?" Составить программу получения k наиболее часто встречающихся ответов и их долей (в процентах).
public static class Count implements Comparable<Count> {
private String name;
private int count;
public Count(String name, int count) {
this.name = name;
this.count = count;
}
public int compareTo(Count c) {
return count > c.count ? -1 : count < c.count ? 1 : 0;
}
}
public static void solve(String[] arr, int k) {
int n = arr.length;
int namesCount = 0; // number of different names
String[] names = new String[n];
int[] counts = new int[n];
for (int i = 0; i < n; i++) {
boolean flag = true;
for (int j = 0; j < namesCount; j++) {
if (arr[i].equals(names[j])) {
counts[j]++;
flag = false;
}
}
if (flag) {
names[namesCount] = arr[i];
counts[namesCount++] = 1;
}
}
Count[] pairs = new Count[namesCount];
for (int i = 0; i < namesCount; i++) {
pairs[i] = new Count(names[i], counts[i]);
}
Arrays.sort(pairs);
for (int i = 0; i < k; i++) {
System.out.printf("%s %02.2f%%\n", pairs[i].name, pairs[i].count * 100.0 / n);
}
}
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
c.count-this.count
а остальное в целом отлично