题目:
在一个字符串中找到第一个只出现一次的字符。如输入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++; } }
原文:http://blog.csdn.net/mmoojing/article/details/19078225