题目:查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
解决方法:可以使用哈希表统计每个字符出现的次数。因为字符只有256种可能,所以我们可以申请一个256大小的数组来统计每个字符出现的次数(以空间换时间),统计完后,我们以原数组的元素值为下表,访问统计数组,直到遇到第一个访问数组元素值为2的元素,其所在位置的字符即为第一个只出现两次的字符。
#include <iostream>
#include <string.h>
using namespace std;
void FindFristRepeatTwiceChar(char *str)
{
if(NULL != str)
{
int CountChar[256] = {
0};
for