【问题描述】
x星球有26只球队,分别用 a ~ z 的26个字母代表。他们总是不停地比赛。
在某一赛段,哪个球队获胜了,就记录下代表它的字母,这样就形成一个长长的串。
国王总是询问:获胜次数最多的和获胜次数最少的有多大差距?
(当然,他不关心那些一次也没获胜的,认为他们在怠工罢了)
【输入格式】
一个串,表示球队获胜情况(保证串的长度<1000)
【输出格式】
要求输出一个数字,表示出现次数最多的字母比出现次数最少的字母多了多少次。
【样例输入1】
abaabcaa
【样例输出1】
4
【提示】
a 出现 5 次,最多;c 出现1次,最少。
5 - 1 = 4
【样例输入2】
bbccccddaaaacccc
扫描二维码关注公众号,回复: 10781556 查看本文章![]()
【样例输出2】
6
题解:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
int cnt[26];
char a[N];
char b[27] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int main()
{
cin >> a;
for (int i = 0; i < 26; i ++)
for (int j = 0; a[j]; j ++) // 字符串数组以 '\0' 结尾,可用作循环结束标志
if(b[i] == a[j]) cnt[i] ++;
int maxn = 0, minn = 1000;
for (int i = 0; i < 26; i ++)
if(cnt[i]) // 排除一次都没有获胜的队伍
{
maxn = max(maxn, cnt[i]);
minn = min(minn, cnt[i]);
}
cout << maxn - minn << endl;
return 0;
}
如果感觉这篇文章对你有帮助的话,不妨点一个赞,十分感谢(✪ω✪)。
printf(“点个赞吧!”);
cout <<“点个赞吧!”;
System.out.println(“点个赞吧!”);
↓↓↓