-
找出字符串中第一个出现次数最多的字符
详细描述:
-
接口说明
原型:
bool FindChar(char* pInputString, char* pChar);
输入参数:
char* pInputString:字符串
输出参数(指针指向的内存区域保证有效):
char* pChar:出现次数最多的字符
返回值:
false 异常失败
true 输出成功
#include <iostream>
#include <string.h>
using namespace std;
bool FindChar(char* pInputString, char* pChar)
{
//在这里实现功能
if(pInputString==NULL)
return false;
int count[256]={0};
int max=count[0];
int t;
while(*pInputString!='\0')
{
count[*pInputString]++;
pInputString++;
}
for (int i = 0; i < 256; ++i)
{
if(max < count[i])
{
max = count[i];
t=i;
}
}
*pChar=char(t);
return true;
}
int main()
{
char str[20]="ddddddddaaaaaaaa";
char c;
cout<<FindChar(str,&c);
}
程序输出 a,明明最先出现的是d,问题出在哪呢,我们遍历字符串最先出现的是ascii码小的字符,所以以上程序下需要改进.
正确代码:
bool FindChar(char* pInputString, char* pChar)
{
int thiscnt = 0;
int maxcnt = 0;
//在这里实现功能
if( pInputString == NULL || *pInputString == '\0')
return false;
*pChar=pInputString[0];
int len=strlen(pInputString);
if(len==1)
return true;
else
{
for(int i=0;i<len;i++)
{
thiscnt=0;
for(int j=0;j<len;j++)
{
if(pInputString[i]==pInputString[j])
thiscnt++;
}
if(thiscnt>maxcnt)
{
maxcnt=thiscnt;
*pChar=pInputString[i];
}
}
return true;
}
}