// 面试题50(二):字符流中第一个只出现一次的字符 // 题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从 // 字符流中只读出前两个字符"go"时,第一个只出现一次的字符是'g'。当从该字 // 符流中读出前六个字符"google"时,第一个只出现一次的字符是'l'。 #include <cstdio> #include <vector> #include <limits> using namespace std; class CharStatistics { public: CharStatistics() : index(0) //index=0时初始化hash表, 有点像构造函数 { for (int i = 0; i < 256; ++i) occurrence[i] = -1; } void Insert(char ch) //插入当前字符的位置到hash表中 { if (occurrence[ch] == -1) //未出现过 occurrence[ch] = index; else if (occurrence[ch] >= 0) //出现次数1次以上 occurrence[ch] = -2; ++index; } char FirstAppearingOnce() { char ch = '