题目:
次数差
x星球有26只球队,分别用a~z的26个字母代表。他们总是不停地比赛。
在某一赛段,哪个球队获胜了,就记录下代表它的字母,这样就形成一个长长的串。
国王总是询问:获胜次数最多的和获胜次数最少的有多大差距?(当然,他不关心那些一次也没获胜的,认为他们在怠工罢了)
输入,一个串,表示球队获胜情况(保证串的长度 < 1000)
要求输出一个数字,表示出现次数最多的字母比出现次数最少的字母多了多少次。
比如:
输入:
abaabcaa
则程序应该输出:
4
解释:a出现5次,最多;c出现1次,最少。5 - 1 = 4
再比如:
输入:
bbccccddaaaacccc
程序应该输出:
6
#include <iostream>
#include<string>
#include<map>
using namespace std;
int main() {
string data;
cin>>data;
map<char, int> ch;
for(int i = 0; i < data.size(); i++){
ch.insert(make_pair(data[i],0));
}
for(int i = 0; i < data.size(); i++){
ch[data[i]]++;
}
int max = 0;
int min = 1000;
while(!ch.empty()){
max<ch.begin()->second?max=ch.begin()->second:max;
min>ch.begin()->second?min=ch.begin()->second:max;
ch.erase(ch.begin());
}
cout<<max-min;
return 0;
}