您的位置:首页 > 其它

第一个只出现一次的字符

2016-03-14 20:09 246 查看
题目描述:

在字符串中找出第一个只出现一次的字符,如输入“abaccdeff”,则输出“b”。

解决办法:

字符是一个长度为8的数据类型,因此共有256种可能,于是我们创建一个长度为256的数组,每个字母根据其ASCLL码值作为数组的下标对应数组的一个数字,而数组中存储的是每个字符出现的次数。这样我们就创建了一个大小为256,以字符ASCLL码作为键值的哈希表。

代码实现:

#include <stdio.h>

char FirstNotRepeatingChar(char* pString)
{
if(pString ==  NULL)
return '\0';
const int tableSize = 256;
unsigned int hashTable[tableSize];
for(unsigned int i = 0; i<tableSize; i++)
hashTable[i] = 0;
char* pHashKey = pString;
while((*pHashKey) != '\0')		//用字符的ascll码作为数组下标的索引(键)存储每个字符出现的次数
hashTable[*(pHashKey++)]++;
pHashKey = pString;
while((*pHashKey) != '\0')
{
if(hashTable[*pHashKey] == 1)
return *pHashKey;
pHashKey++;
}
return '\0';
}
int main()
{
char* pString = "abaccdeff";
char result = FirstNotRepeatingChar(pString);
printf("%c\n",result);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: