题目:
在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
为了简单起见,假设字符串都是小写字母。
思想:
先遍历一遍,用一个数组统计每一个字符出现的次数。
然后再从字符串的开头开始找出第一个仅出现一次的字符。
代码:
void FirstAppear(char *outputCh, char *intputstr)
{
if(intputstr == NULL)
{
return;
}
//26字母出现的次数情况
int number[26] = {0};
//备份字符串
char *tempStr = intputstr;
//遍历一遍,遇到"\0"终止
while(*tempStr != '\0')
{
number[(*tempStr++) - 97]++;
}
//遍历一遍,从开头找出第一个仅出现一次的字符
while(*intputstr != '\0')
{
if(number[*intputstr - 97] == 1)
{
*outputCh = *intputstr++;
return;
}
*intputstr++;
}
}