题目描述
能源城有 26 只战队,分别用 a 到 z 的 26 个字母代表。他们总是不停地比赛。
在某一赛段,哪个战队获胜了,就记录下代表它的字母,这样就形成一个长长的串。
城主总是询问:获胜次数最多的和获胜次数最少的有多大差距?(当然,他不关心那些一次也没获胜的,认为他们在摆烂罢了)
输入输出格式
输入格式
输入一个串,表示战队获胜情况(保证串的长度 <1000)。
输出格式
一个数字,表示出现次数最多的字母比出现次数最少的字母多了多少次。
输入输出样例1
输入
abaabcaa
输出
4
输入输出样例2
输入
qaabcbcapmtba
输出
3
代码实现:
【学习一下map的使用,map<char,int>的值初始就都是0,不用再初始化为0了】
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
int main(){
map<char,int>mp;
string str;
cin>>str;
int maxNum=-1,minNum=99999999;
for(int i=0;i<str.length();i++){ //累加,同时更新最大值,最小值没法顺带着更新哦
mp[str[i]]++; //直接在0的基础上累加
maxNum=max(maxNum,mp[str[i]]);
}
for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++){
minNum=min(minNum,it->second);
}
cout<<maxNum-minNum;
return 0;
}