字母的争论
时间: 1ms 内存:128M
描述:
某一天,26个小写的英文字母争论了起来,它们都想当老大,闹得不可开交。这时逗比的小甲想到了一个好办法使它们平息了下来,规则是这样的:读入一行仅由小写英文字母组成的字符串,统计这26个小写英文字母在这串字符中出现的次数,谁出现的此数多谁就是老大。另外,没有出现在这串字符中的小写英文字母就只能甘拜下风了。虽然这种办法对有些字母有些不公平,但是大家还是硬着头皮接受了。那么好了,现在问题来了,聪明的你就编道程序帮它们解决吧。
输入:
一行仅由小写英文字母组成的字符串,不包含其他的各类字符。
输出:
输出出现次数最多的字母和次数,如果出现次数相同则输出ASCII码大的
示例输入:
goodgoodstudydaydayup
示例输出:
d:5
提示:
参考答案(内存最优[920]):
#include<stdio.h>
int main()
{
char c;
int a[200]={0},b,max=0,n;
while((c=getchar())&&c>='a'&&c<='z')
{
b=c;
a[b]++;
}
for(b='a';b<='z';b++)
{
if(a[b]>=max)
{
max=a[b];
n=b;
}
}
c=n;
printf("%c:%d\n",c,max);
return 0;
}
参考答案(时间最优[0]):
#include <iostream>
using namespace std;
int main()
{
int i,a[26]={0},temp=0,x;
char ch;
while((ch=getchar())!='\n')
if(ch>='a'&&ch<='z')
a[ch-'a']++;
for(i=0;i<26;i++)
{
if(a[i]>temp)
{temp=a[i];x=i;}
}
cout<<char('a'+x)<<":"<<temp;
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。
