题目:
请编写程序,找出一段给定文字中出现最频繁的那个英文字母。
输入格式:
输入在一行中给出一个长度不超过1000的字符串。字符串由ASCII码表中任意可见字符及空格组成,至少包含1个英文字母,以回车结束(回车不算在内)。
输出格式:
在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。
输入样例:This is a simple TEST. There ARE numbers and other symbols 1&2&3...........输出样例:
e 7
思路:以字母为下标,统计出现的次数。需要注意,判断最大值时不能在输入的过程中随时判断,需要保证并列的时候输出最小的字母,必须等数据输入完毕再遍历一遍。
#include<iostream> #include<string> using namespace std; int main() { int l, i, a[256]={0}, m=0; char b; string c; getline(cin, c); l = c.length(); for (i=0; i<l; i++) { if (c[i] <='Z' && c[i] >='A') c[i] = c[i]-'A'+'a'; if (c[i] <='z' && c[i] >='a') { a[c[i]]++; } } for (i='a'; i<'z'; i++) { if (a[i] > m) { m = a[i]; b = char(i); } } cout<<b<<" "<<m; return 0; }