题目
描述:
找出字符串中第一个出现次数最多的字符
详细描述:
接口说明
原型:
bool FindChar(char* pInputString, char* pChar);
输入参数:
char* pInputString:字符串
输出参数(指针指向的内存区域保证有效):
char* pChar:出现次数最多的字符
返回值:
false 异常失败
true 输出成功
练习阶段:
初级
代码
/*---------------------------------------
* 日期:2015-07-05
* 作者:SJF0115
* 题目:找出字符串中第一个出现次数最多的字符
* 来源:华为机试练习题
-----------------------------------------*/
#include <iostream>
#include "OJ.h"
#include <string>
using namespace std;
/*
功能: 找出字符串中第一个出现次数最多的字符
输入: char* pInputString:字符串
输出: char* pChar:出现次数最多的字符
返回: false 异常失败
true 输出成功
*/
bool FindChar(char* pInputString, char* pChar){
if(pInputString == NULL || pChar == NULL){
return false;
}//if
int size = strlen(pInputString);
if(size == 0){
return false;
}//if
int hash[256] = {0};
// 统计个数
for(int i = 0;i < size;++i){
++hash[pInputString[i]];
}//for
// Max
int Max = 0;
for(int i = 0;i < size;++i){
if(Max < hash[pInputString[i]]){
Max = hash[pInputString[i]];
}//if
}//for
// 第一个出现次数最多的字符
for(int i = 0;i < size;++i){
if(hash[pInputString[i]] == Max){
*pChar = pInputString[i];
break;
}//if
}//for
return true;
}