Во время собеседования на должность разработчика Java меня спросили следующее:
Напишите функцию, которая принимает два параметра:
- Строка, представляющая текстовый документ и
- целое число, представляющее количество возвращаемых предметов.
Реализуйте функцию так, чтобы она возвращала список Строк, упорядоченных по частоте слова, первое из которых встречается чаще всего. Ваше решение должно выполняться за время где - количество символов в документе.
Вот что я ответил (в псевдокоде), это не а скорее время из-за сортировки. Я не могу понять, как это сделать раз.
wordFrequencyMap = new HashMap<String, Integer>();
words = inputString.split(' ');
for (String word : words) {
count = wordFrequencyMap.get(word);
count = (count == null) ? 1 : ++count;
wordFrequencyMap.put(word, count);
}
return wordFrequencyMap.sortByValue.keys
Кто-то знает, или кто-то может дать мне несколько советов?
Hashtable
является ли устаревшая Java или нет действительно неуместной для целей этого сайта.