在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
如果从头遍历,与后面字符进行比较出现次数是否为1,算法复杂度为O(n^2),
考虑以空间换时间,因为一个字符占8位。因此可用一个256位数组保存每个字符出现的次数
char find(const char arr[])
{
int map[256];
memset(map, 0 ,256*sizeof(int));
for(const char* p= arr; *p!='\0'; p++)
{
(map[*p])++;
}
char ret = '\0';
for(int i=0; i<256; i++)
{
if(1 == map[i])
{
ret = i;
break;
}
}
return ret;
}
int main()
{
const char* p = "abaccdeff";
char ret = find(p);
printf("%c", ret);
return 0;
}