计算字母频率的最佳数据结构?

时间:2015-03-02 02:52:36

标签: data-structures hashmap

任务:

本文档中所有字词中最常见的首字母是什么?

- 未加权(无论出现多少次,都算一次一次)

- 加权(每次出现时单独计算一个单词)

本文档中给定长度的最常见词是什么?

我正在考虑使用hashmap来计算最常见的第一个字母。但是我应该对未加权和加权使用散列图吗?

对于给定长度的最常见单词(例如5),我可以使用更简单的数据列表吗?

1 个答案:

答案 0 :(得分:1)

对于未加权的,您需要一个哈希表来跟踪您已经看过的单词,以及一个哈希映射来计算第一个字母的出现次数。也就是说,你需要写:

if words_seen does not contain word
    add word to words seen
    update hash map with first letter of word
end-if

对于加权,您不需要该哈希表,因为您不关心该词出现的次数。所以你可以写:

update hash map with first letter of word

对于最常见的单词,您需要一个哈希映射来跟踪您看到的所有唯一单词以及您看到该单词的次数。扫描完整个文档后,通过该哈希映射确定最常用的长度。

您可能不希望将数组列表用于上一个任务,因为您要计算出现次数。如果使用数组列表,则在扫描整个文档后,您必须对该列表进行排序并计算频率。这比使用哈希映射需要更多的内存和更多的时间。