1187:统计字符数
【题目描述】
给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多。
【输入】
输入包含一行,一个字符串,长度不超过1000。
【输出】
输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开。如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符。
【输入样例】
abbccc
【输出样例】
c 3
桶排序
若排序的值在一个明显的范围内,则可以设计有限个有序桶,同时可以做到去重(值>1的部分不输出)
- 如果输入是字符串,首先需要将字符串转化为0-26的数字:即
a[i]-'0'-49
(49是数字0和英文字母的差值) - 每次将获取的值作为下标,值+1
- 要输出字符串则
index+49+48
(+49得到的是正常数字的ASCII码,所以+48才能得到英文字母)
#include<bits/stdc++.h>
using namespace std;
const int Max = 1001;
int arr[Max];
int main(){
string a;
cin>>a;
int len = a.size();
for(int i=0;i<len;i++){
arr[a[i]-'0'-49]++;
}
int m = arr[0],index = 0;
for(int i=1;i<26;i++)
{
if(arr[i]>m){
m = arr[i];
index = i;
}
}
cout<<char(index+49+48)<<" "<<m;
return 0;
}