您的位置:首页 > 其它

找出字符串中第一个出现次数最多的字符

2015-07-07 10:52 399 查看
找出字符串中第一个出现次数最多的字符

详细描述:

接口说明

原型:
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: