题目:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出‘b'。
思路:定义一个哈希表,键值是字符,而值是该字符出现的次数。C++模板类中没有哈希表的实现,因此我们考虑如何实现一个简单的哈希表,字符是一个1字节8位的数据类型,因此总共256种可能,因此我们定义一个长度为256的数组就可以根据字符的ASCII作为下标存储每个字符的次数,最后查找第一个出现一次的字符即可。
代码:
char Firstchar(char *pStr)
{
if (pStr==NULL)
return '\0';
const int tablesize = 256;
unsigned int A[tablesize];
for (unsigned i = 0; i < tablesize; i++)
A[i] = 0;
char *p1 = pStr;
while ((*p1) != '\0')
{
A[*p1]++;
p1++;
}
p1 = pStr;
while (*p1!= '\0')
{
if (A[*p1] == 1)
return *p1;
p1++;
}
return '\0';
}