我怎么能这样做在一根绳子上的频率分析,而无需使用开关
-
23-09-2019 - |
题
我正在一所学校的项目来实现对文本的霍夫曼码。课程的第一部分要求在文本上的频率分析。有更好的除了巨开关和计数器的阵列做呢?
即:
int[] counters
for(int i = 0; i <inString.length(); i++)
{
switch(inString[i])
case 'A':
counters[0]++;
.
.
.
我想这样做的所有字母数字字符和标点符号。我使用C ++。
解决方案
为什么不:
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;
其他提示
可以使用由字符索引的数组:
int counters[256];
for (int i = 0; i < inString.length(); i++) {
counters[(unsigned char)inString[i]]++;
}
您也想你counters
阵列初始化为零,当然。
使用地图似乎完全适用:
map<char,int> chcount;
for(int i=0; i<inString.length(); i++){
t=inString[i];
chcount[i]? chcount[i]++ : chcount[i]=1;
}
不隶属于 StackOverflow