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

Best data structure to count letter frequencies?

任务:

本文档中所有单词中最常见的第一个字母是什么?

-unweighted(无论出现多少次,只计算一次)

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

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

我正在考虑使用哈希图来计算最常见的首字母。但是我应该对未加权和加权的都使用哈希图吗?

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

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

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

对于加权,你不需要那个散列table,因为你不关心这个词出现了多少次。所以你可以写:

update hash map with first letter of word

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

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