[剑指offer]面试题35:第一个只出现一次的字符

Posted Wecccccccc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[剑指offer]面试题35:第一个只出现一次的字符相关的知识,希望对你有一定的参考价值。

面试题35:第一个只出现一次的字符
题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出’b’。

代码如下:

char FirstNotRepeatingChar(char *pString)
{
	if (pString == nullptr) 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') hashTable[*(pHashKey++)]++;

	pHashKey = pString;
	while (*pHashKey != '\\0')
	{
		if (hashTable[*pHashKey] == 1) return *pHashKey;
		pHashKey++;
	}
	return '\\0';
}

测试用例:
● 功能测试(字符串中存在只出现一次的字符,字符串中不存在只出现一次字符,字符串中所有字符都只出现一次)。
● 特殊输入测试(字符串为NULL指针)。
本题考点:
● 考查对数组、字符串的编程能力。
● 考查对哈希表的理解及运用。
● 考查对时间效率及空间效率的分析能力。当面试官提示最直观的算法不是最优解的时候,应聘者需要立即分析出这种算法的时间效率。在想出基于哈希表的算法之后,应聘者也应该分析出该方法的时间效率和空间效率分别是O(n)和O(1)。

以上是关于[剑指offer]面试题35:第一个只出现一次的字符的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer-面试题50-第一个只出现一次的字符-哈希表

剑指Offer-时间效率与空间效率的平衡面试题50.2:字符流中第一个不重复的字符

剑指offer 面试50题

《剑指offer》第五十题II:字符流中第一个只出现一次的字符

《剑指offer》第五十题I:字符串中第一个只出现一次的字符

剑指offer35 第一个只出现一次的字符