题目概述
解题思路
定义一个256个长度的字符数组
将每一个元素初始化成0
遍历一遍字符串
将遇到字符对应ASCII码的对应数组下标位置的元素+1
遍历完后
再次重新遍历字符串,将遇到的字符,根据其对应ASCII码的下标来查找从数组的数字
如果是1,那么这个字符就是第一次出现一次的字符了
代码实现
char FindFisrtNum1Char(const char* str)
{
assert(str);
//统计每个字符出现的个数
char hash[256] = {0};
const char* pstr = str;
while (*pstr != '\0')
{
hash[*pstr]++;
pstr++;
}
pstr = str;
while (*pstr != '\0')
{
if (hash[*pstr] == 1)
return *pstr;
pstr++;
}
return 0;
}
void TestFindFisrtNum1Char()
{
char* str = "abcdacd";
cout << FindFisrtNum1Char(str) << endl;
}