第七题:次数差
题目描述
x星球有26只球队,分别用a~z的26个字母代表。他们总是不停地比赛。
在某一赛段,哪个球队获胜了,就记录下代表它的字母,这样就形成一个长长的串。
国王总是询问:获胜次数最多的和获胜次数最少的有多大差距?(当然,他不关心那些一次也没获胜的,认为他们在怠工罢了)
输入,一个串,表示球队获胜情况(保证串的长度<1000)
要求输出一个数字,表示出现次数最多的字母比出现次数最少的字母多了多少次。
比如:
输入:
abaabcaa
则程序应该输出:
4
解释:a出现5次,最多;c出现1次,最少。5-1=4
再比如:
输入:
bbccccddaaaacccc
程序应该输出:
6
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
代码较简单,把题给的数放进去,不用转换,直接放进去就行。
然后遍历一遍看看谁的多谁的少,多的减去除零以外最小的数就行了。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a[300] = {0};//用来统计数量
char s[1000];//把题给的字符串放到这个里面
scanf("%s",&s);
int maxn = 0,minn = 256;
int len = strlen(s);//len即为s的长度
for(int i = 0;i<len;i++)
{
a[s[i]]++;
}
for(int i=0;i<300;i++)
{
if(a[i]>maxn)
{
maxn = a[i];
}
if(a[i]<minn&&a[i]!=0)
{
minn = a[i];
}
}
cout<<maxn - minn<<endl;
}
代的是题给例子