PAT-B 1042. 字符统计(20)

时间:2022-12-20 12:09:35

题目链接在此

思路

题目要统计的只是英文字母的频率(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;
}