[剑指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.2:字符流中第一个不重复的字符
《剑指offer》第五十题II:字符流中第一个只出现一次的字符