解法:

 

char FirstNotRepeatingChar(char *pString) {     if (pString == NULL)    //如果是空串         return '\0';      // 创建并初始化哈希表     const int sizeTable = 256;     unsigned int hashTable[sizeTable];     for (int i = 0;i < sizeTable; ++ i)     {         hashTable[i] = 0;     }      //统计字符出现的次数     char *pHashKey = pString;     while (*pHashKey != '\0')     {         ++ hashTable[*(pHashKey++)];     }      //查找出现次数等于1的字符     pHashKey = pString;     while (*pHashKey != '\0')     {         if (hashTable[*pHashKey] == 1)             return *pHashKey;          ++ pHashKey;     }      return '\0'; }

推广:当字符不仅仅包含256个字符时,比如包含汉字,使用C++STL中的关联容器,如map则是一个比较容易的解法。

 

测试用例:

1、输入一个字符串:包含只出现一次的字符,不包含只出现一次的字符,全部是只出现一次的字符

2、输入一个NULL串