存储和打印字符频率对的最有效算法是什么?

时间:2018-11-18 15:50:53

标签: data-structures big-o

描述最有效的MOST算法(在最坏的情况下为大O),以及所需的数据结构,以确定英语文本文档中可以在键盘上具有任意字符,大写或小写字母的字符的频率,以及最后打印(字符,频率)对。在最坏的情况下,您将算作什么操作,并给结果带来很大的时间。

2 个答案:

答案 0 :(得分:0)

其中key = character和value = frequency的哈希图最适合任何类型的字符和编码。

如果只需要键盘可以产生的任何东西,也可以使用频率数组,其中F [字符ASCII码] = frequency。

两个解决方案的每次操作都具有恒定的O(1)运行时。

答案 1 :(得分:0)

最好使用大小等于256(总ascii字符)的数组。
最初,数组中的所有值均为0。从英文文本文档中读取字符时,我们可以简单地将等于给定字符的ascii值的index值递增。因此,这些操作可以在O(1)时间复杂度下完成而没有任何开销(如果使用hashMap,则在最坏的情况下会有冲突的开销)。
由于我们必须遍历给定文本文档中的所有字符,因此所提出方法的总体时间复杂度为O(n),其中n是文本文档的长度。