思路1:hash表保存
1.申请256大小的数组保存字符,1字节,2的8次方
解法太普通
思路2:改进版,再建一个数组存放第一次出现的位置,这样不用遍历整个字符串
- 类类型变量在定义时,如果没有提供初始化式,则会自动调用默认构造函数进行初始化(不论变量在哪里定义)。
- 数组初始化列表中的元素个数小于指定的数组长度时,不足的元素补以默认值。
https://www.cnblogs.com/2018shawn/p/9472506.html
int a[5] = { 0 }; // 第一个初始化为0,后面的补默认值
int index[128] = {0};//记录第一次出现的位置int count[128] = {0};int num = 0;//Insert one char from stringstreamvoid Insert(char ch){count[ch]++;index[ch] = num++;}//return the first appearence once char in current stringstreamchar FirstAppearingOnce(){int minIndex = num;char ch = '#';for (int i = 0; i < 128; i++) { // !!!if (count[i] == 1 && index[i] < minIndex) {ch = (char) i;minIndex = index[i];}}return ch;}
