找出字符串中第一个出现次数最多的字符
-
找出字符串中第一个出现次数最多的字符
具体描写叙述:
-
接口说明
原型:
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; } }
posted on 2018-01-30 21:46 yjbjingcha 阅读(572) 评论(0) 编辑 收藏 举报