解决思路:
1、使用哈希表,hash[256],遍历一遍字符串,得到每个字符出现的次数。
2、设定一个Order数组,记录字符出现的次序,然后遍历次序数组,在hash表中找出它出现的次数,如果为1,那就找到符合要求的字符了。
比如字符串为“abccaffdde”,那么存放在order数组的字符就为order[] = {'a', 'b','c','f', 'd','e'}。
代码如下:
#include <stdio.h>
char getUniqueChar(char *pStr)
{
int i = 0;
if (NULL == pStr)
return '\0';
const int tablesize = 256;
unsigned int hashTable[tablesize] = {0};
unsigned int order[tablesize] = {0};
char pHashKey = pStr;
while(*pHashKey != '\0')
{
if (0 == hashTable[*pHashKey])
{
order[i++] = *pHashKey;
}
hashTable[*pHashKey++]++;
}
for (i=0; i<tablesize; i++)
{
if(1 == hashTable[order[i])
return order[i];
}
if (i == tablesize)
return '\0';
}