如何在不使用开关的情况下对字符串进行频率分析

May*_*nza 4 c++ huffman-code frequency-analysis

我正在做一个学校项目,在文本上实现霍夫曼代码.第一部分当然需要对文本进行频率分析.除了巨型开关和一系列计数器之外还有更好的方法吗?

即:

int[] counters

for(int i = 0; i <inString.length(); i++)
{
switch(inString[i])
    case 'A':
    counters[0]++;
.
.
. 
Run Code Online (Sandbox Code Playgroud)

我想做所有字母数字字符和标点符号.我正在使用c ++.

Ale*_*ler 8

为什么不:

int counters[256] = {0};
for(int i = 0; i <inString.length(); i++)
    counters[inString[i]]++;
}


std::cout << "Count occurences of \'a\'" << counters['a'] << std::endl;
Run Code Online (Sandbox Code Playgroud)


Gre*_*ill 6

您可以使用由字符索引的数组:

int counters[256];
for (int i = 0; i < inString.length(); i++) {
    counters[(unsigned char)inString[i]]++;
}
Run Code Online (Sandbox Code Playgroud)

当然,您还需要将counters数组初始化为零.