题目链接在此。
思路
题目要统计的只是英文字母的频率(a~z和A~Z),并且不区分大小写。所以用一个int型hashTable数组保存每个字符对应出现的次数,遇到大写字母时先转换成小写字母之后再进行字符统计。
AC代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
char str[1010];
gets(str);
int hashTable[256] = {0};
int len = strlen(str);
for(int i = 0; i < len; i++){
char c = str[i];
if(c >= 'A' && c <= 'Z'){
c += 32;
hashTable[c]++;
}else if(c >= 'a' && c <= 'z'){
hashTable[c]++;
}
}
int index = 0, max = -1; //index记录频率最高的数组下标,也就是其ASCII码; max是出现的次数
for(int i = 0; i < 256; i++){
if(max < hashTable[i]){
max = hashTable[i];
index = i;
}
}
printf("%c %d\n",index, max);
return 0;
}