#define_CRT_SECURE_NO_WARNINGS#include<iostream>intmain(){int a[128]={0};//存字符出现的次数,你想一想,合理字符就128个。明显的char s[1000];scanf("%s", s);int len =strlen(s);int max =0;//存出现次数最多次的字符 和次数char t =0;//一个冒泡搞定for(int i =0; i < len; i++){
a[s[i]]++;if(max < a[s[i]])//先比次数,次数相同再比ASCII{
max = a[s[i]];
t = s[i];}elseif(max == a[s[i]]){if(t > s[i]){
t = s[i];}}}printf("%c\n%d", t, max);}
实现2
#include<iostream>#include<string>intmain(){
std::string str;
std::cin >> str;int n = str.size();int s[1010];//存字符出现的次数for(int i =0; i < n; i++){int a = str[i]-'a';
s[a]++;}//走一个冒泡int max =0;char ch;for(int i =0; i <100; i++){if(max <= s[i]){if(max < s[i]){
max = s[i];
ch =(char)(i +'a');}elseif(max == s[i]){
max = s[i];
ch = ch;}}}
std::cout << ch << std::endl;
std::cout << max << std::endl;return0;}
实现3
#include<iostream>#include<string>
using namespace std;char m[1005];int n[1005];char c;
bool b[1005];
string str;intmain(){int max =0;
cin >> str;memset(b, false,sizeof(b));for(int i =0; i < str.size(); i++){while(b[i]){
i++;}
m[i]= str[i];
b[i]= true;
n[i]=1;//对于字符item来说,总是拿他和他后面的字符对比for(int j = i +1; j < str.size(); j++){if(m[i]== str[j]){
n[i]++;
b[j]= true;//找到相同的,就给标识为true 次数也加1}}//比一次当前最大值,有变动更新一波if(max <= n[i]){if(max == n[i]){if((c -'a')<=(m[i]-'a')){
c = c;}else{
c = m[i];}}else{
max = n[i];
c = m[i];}}}
cout << c << endl; cout << max << endl;return0;}
实现4
#include<iostream>#include<string>
using namespace std;intmain(){char a[1005];int len;scanf("%s", a);
len =strlen(a);int b[26]={0};//初始化b数组,存用户注入字符串 每一个(字符+'a')对应的ASCII码(数字)出现次数for(int i =0; i < len; i++){
b[a[i]-'a']++;}//遍历次数数组,b数组元素经过约束本身已经有序int max1 =0, j;for(int i =0; i <26; i++){if(max1 < b[i]){
max1 = b[i];
j = i;//下标就是目标字符距离'a'字符的偏移咯}}
std::cout <<char('a'+ j)<< std::endl << max1;return0;}