/*
功能: 找出字符串中第一个出现次数最多的字符
输入: char* pInputString:字符串
输出: char* pChar:出现次数最多的字符
返回: false 异常失败
true 输出成功
*/
bool FindChar(char* pInputString, char* pChar)
{
//在这里实现功能
char *uniq_string;
int *time;
int *flag;
int len;
int i,j,k;
int count,max;
len=max=0;
time=flag=NULL;
if(pInputString == NULL || pChar == NULL)
return false;
while(*(pInputString+len)!='\0')
{
len++;
}
uniq_string=(char *)malloc((len+1)*sizeof(char));
time=(int *)malloc((len+1)*sizeof(int)); //记录每个字符出现的次数
flag=(int *)malloc((len+1)*sizeof(int));//记录是否曾经出现
for(i=0;i<len;i++)
{
*(flag+i)=0;
}
k=0;
for(i=0;i<len;i++)
{
count=1;
if(*(flag+i) == 1)
{
//如果已经出现过,则直接跳过
}
else
{
for(j=i+1;j<len;j++)
{
if(*(pInputString+i) == *(pInputString+j))//找到相同的则进行累加
{
count++;
*(flag+j)=1;
}
}
}
if(*(flag+i)!=1)
{
*(uniq_string+k)=*(pInputString+i);//将剔除重复的数据填入uniq_string中,并同时将出现次数存在time中
*(time+k)=count;
k++;
}
}
*(uniq_string+k)='\0';
*(time+k)='\0';
// free(flag);
for(i=0;i<k;i++)
{
if(*(time+i)>max)
{
max=*(time+i);//找到次数最大的值
}
}
for(i=0;i<k;i++)
{
if(*(time+i) == max)
{
*pChar=*(uniq_string+i); //找到第一次出现的最大值
break;
}
}
free(uniq_string);
free(time);
free(flag);
return true;
}