查找char数组中最常出现的字符

时间:2012-07-08 16:50:11

标签: c++ string char

我正在尝试使用以下算法找到此数组中出现次数最多的字符:

char a[]={"aaaadddddaa"};
int max=0;
int count=0;
char maxCharcter;
for(char q='a';q<='z';q++)
{
    for(int i=0; i<strlen(a);i++)
    {
        if(a[i]==q)
            count++;
    }

    if(count>max)
    {
        max=count;
        maxCharcter=q;
    }
}

cout<<max<<endl;
cout<<maxCharcter<<endl;

输出应为max=6 maxCharcter=a,但我得max=11 maxCharcter=d。我做错了什么?

2 个答案:

答案 0 :(得分:1)

count应该在你的第一个for循环中初始化

for(char q='a';q<='z';q++) {
   count = 0;
   //continue code here
}

答案 1 :(得分:1)

这可能只是“重置”计数一次,而不是每个角色。

int count=0;
char maxCharcter;
for(char q='a';q<='z';q++)
{
    for(int i=0; i<strlen(a);i++)

可能应该是

char maxCharcter;
for(char q='a';q<='z';q++)
{
    int count=0;
    for(int i=0; i<strlen(a);i++)

除此之外,你可以通过一次字符串来加速整个事情,使用另一个数组来计算每个字符串的出现次数......