题目描述
从键盘输入一个字符串(可能含有数字、字母、其他可见字符),输出出现频率最高的英文字母及次数,忽略字母的大小写(如大写 A 和小写 a 均视为 a)。
例如:
输入:There are 10,000 soldiers in the town.
输出:e 5
输入格式
输入一行字符串。
输出格式
输出字符串中出现频率最高的英文字母(小写)及次数。
数据范围
字符串长度不超过 1000。
样例
输入样例:
There are 10,000 soldiers in the town.
输出样例:
e 5
C++ 代码
#include<iostream>
using namespace std;
const int N=1010;
int cnt[26]; // 表示a-z和A-Z字母出现的次数
/* 字母a~z映射到数字0~25 */
int main()
{
string s;
getline(cin,s);
int n=s.size(); // 字符串长度
for(int i=0;i<n;i++)
{
if(s[i]>='a' && s[i]<='z') cnt[s[i]-'a']++; // 小写字母
if(s[i]>='A' && s[i]<='Z') cnt[s[i]-'A']++; // 大写字母
}
int max=-1,index;
for(int i=0;i<26;i++) // 找出出现次数最多字母的索引
if(cnt[i]>=max)
{
max=cnt[i];
index=i;
}
cout<<(char)('a'+index)<<" "<<max<<endl;
return 0;
}