我正在尝试使用以下算法找到此数组中出现次数最多的字符:
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
。我做错了什么?
答案 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++)
除此之外,你可以通过一次字符串来加速整个事情,使用另一个数组来计算每个字符串的出现次数......