/**************************************************************************
题目:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出‘b‘。
**************************************************************************/
/*
解题思路:
我们可以定义哈希表的键值(Key)是字符,而值(value)是该字符出现的次数。同时
我们还需要从头开始扫描字符串两次。第一次扫描字符串时,每扫描到一个字符就在哈希
表的对应项中把次数加1。接下来第二次扫描时,每扫描到一个字符就能从哈希表中得到
字符出现的次数。这样第一个只出现一次的字符就是符合要求的输出。
*/
#include<stdio.h>
char firstNoRepeaChar(char* str)
{
if(str == NULL)
return ‘\0‘;
const int tableSize = 256;
unsigned int hashTable[tableSize];
for(unsigned int i=0; i<tableSize; ++i)
hashTable[i] = 0;
char* pHashKey = str;
while( *pHashKey != ‘\0‘)
hashTable[*pHashKey++]++;
pHashKey = str;
while(*pHashKey != ‘\0‘)
{
if(hashTable[*pHashKey] == 1)
return *pHashKey;
++pHashKey;
}
return ‘\0‘;
}
void test()
{
char* str = "abaccdeff";
printf("%c\n",firstNoRepeaChar(str));
}
int main()
{
test();
return 0;
}
==参考剑指offer原文:http://blog.csdn.net/walkerkalr/article/details/21294759