出现次数最多的字符 描述 请在仅包含小写字母的字符串中找出出现次数最多的字符。 如果出现次数最多的字符有多个,输出最后一个出现次数最多的字符。

#include<bits/stdc++.h>
using namespace std;
int ch[26];
int main()
{
string s;
cin>>s;
int i,dt=0,d;
int index;
int max=-1;
for( int i = 0; i < s.size() ; i++ )
{
ch[s[i]-'a'+1]++;
}
for(i=0;i<26;i++)
{

    if(ch[i]>=max)            
    {
        max=ch[i];
        index=i;
    }
}
printf("%c",index+'a'-1);

return 0;

}
//输入 一个字符串,长度小于 100000。 输出 输出最后一个出现次数最多的字符。 样例输入 abcabd 样例输出 b

参考:

#include<stdio.h>
#include<string.h>
 int main()
{
    void number(char *p);
    char str[100];
    int n;
    scanf_s("%d", &n);
    getchar();
    while(n--)  
    {
        gets(str);
        number(str);
    }
    return 0;
}
void number(char* p)
{
     int num = 0, max;
     char s[] = { '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 a[26] = {0};
     while (*p != '\0')        //字符串的结束符号位"\0"
     {
         for (int i = 0; i < 26; i++)
         {
             if (*p == s[i] || *p == (s[i] - 32))
                a[i]++;
        }
         p++;
     }
     max = a[0];
     for(int i=0;i<26;i++)
         if (a[i] >= max)
         {
             num = i;
             max = a[i];
         }
     printf("%c\n", s[num]);
     
}