解法:
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串
转载于:https://blog.51cto.com/zhujifang/1380195