每日刷题(107)
PREV-65单词分析
题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这个字母出现的次数。
输入格式
输入一行包含一个单词,单词只由小写英文字母组成。
输出格式
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
样例输入
lanqiao
样例输出
a
2
样例输入
longlonglongistoolong
样例输出
o
6
C++代码
#include<bits/stdc++.h>
using namespace std;
struct character{
int id;
int cnt;
}chara[30];
bool cmp(character u, character v)
{
if(u.cnt != v.cnt) //最后取排在前面的数
{
return u.cnt > v.cnt;
}
else
{
return u.id < v.id;
}
}
int main()
{
string s;
cin >> s;
for(int i = 0; i < 30; i++) //初始化
{
chara[i].cnt = 0;
chara[i].id = i;
}
for(int i = 0; i < s.length(); i++)
{
chara[s[i] - 97].cnt++;
}
sort(chara, chara + 26, cmp);
cout << (char)(chara[0].id + 97)<< endl << chara[0].cnt << endl;
return 0;
}
部分样例运行结果如下: