В «Программировании жемчуга» я встретил следующую проблему. Вопрос в следующем: «печатать слова в порядке убывания частоты». Как я понимаю проблема в этом. Предположим, что существует заданный строковый массив, назовем его s
(слова, которые я выбрал случайно, это не имеет значения),
String s[]={"cat","cat","dog","fox","cat","fox","dog","cat","fox"};
Мы видим, что строка "кошка" встречается 4 раза, "лиса" - 3 раза, а "собака" - 2 раза. Поэтому желаемый результат будет таким:
cat
fox
dog
Я написал следующий код на Java:
import java.util.*;
public class string {
public static void main(String[] args){
String s[]={"fox","cat","cat","fox","dog","cat","fox","dog","cat"};
Arrays.sort(s);
int counts;
int count[]=new int[s.length];
for (int i=0;i<s.length-1;i++){
counts=1;
while (s[i].equals(s[i+1])){
counts++;
}
count[i]=counts;
}
}
}
Я отсортировал массив и создал массив count, в который я записал количество вхождений каждого слова в массив.
Моя проблема в том, что каким-то образом индекс элемента целочисленного массива и элемента строкового массива не совпадает. Как я могу напечатать слова в соответствии с максимальными элементами целочисленного массива?