在接受Java开发人员职位面试时,有人问我以下问题:
编写一个具有两个参数的函数:
- 代表文本文档的字符串,以及
- 提供要返回的项目数的整数。
实现函数,使其返回按单词频率排序的字符串列表,最频繁出现的单词在前。您的解决方案应在时间运行,其中是文档中的字符数。n
以下是我的回答(用伪代码),由于排序,它不是,而是时间。我不知道该怎么做时间。 O (n log n )O (n )
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确实无关紧要。