2.【附加题】–查找一个字符串中第一个只出现两次的字符。
比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
解法:
利用哈希表;由于ASCII表中一共存在256个字符;所以开辟一个256大小整型数组;将这个数组看做哈希表,将字符的ASCII值当做Key值作为数组下标,将key对应的数组元素的值作为value,先遍历一遍字符串,统计出字符串中每个字符出现的次数;再从字符串的首字符的ASCII码的下标开始遍历一遍哈希表,找出第一个value值为2的key;返回该key对应的字符;就是要求的第一次出现两次的字符;
#include<iostream>
using namespace std;
char FirstCharThatAppearsOnlyTwoTimes(char* str)
{
//1.如果字符串指针为空,返回‘\0’字符
if (str==NULL)
{
return