题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
解题思路:对于一般字符串或整数数组是否存在某对象,或者判断对象个数问题,都可以利用hashtable来完成,这里,我们利用数组构建一个简单的hashtable,第一次遍历字符串,记录每个字符出现的次数;第二次遍历记录个数的数组,找到第一个值为1的位置对应的字符,就是本题所求的字符,代码如下:
#include <stdio.h>
#include <memory.h>
char firstSingle(char *str){
int arr[256];
char *pt = str;
if (*pt == '\0'){
return '\0';
}
memset(arr,0,sizeof(arr));
while ('\0' != *pt){
arr[*pt++]++;
}
while ('\0' != *str){
if (arr[*str] == 1){
return *str;
}
str++;
}
return '\0';
}
int main(){
char *str = "abcddefba";
printf("%c\n", firstSingle(str));
system("pause");
return 0;
}