思路1:hash表保存

    1.申请256大小的数组保存字符,1字节,2的8次方

    解法太普通
    思路2:改进版,再建一个数组存放第一次出现的位置,这样不用遍历整个字符串

    1. 类类型变量在定义时,如果没有提供初始化式,则会自动调用默认构造函数进行初始化(不论变量在哪里定义)。
    2. 数组初始化列表中的元素个数小于指定的数组长度时,不足的元素补以默认值。

    https://www.cnblogs.com/2018shawn/p/9472506.html

    1. int a[5] = { 0 }; // 第一个初始化为0,后面的补默认值
    1. int index[128] = {0};//记录第一次出现的位置
    2. int count[128] = {0};
    3. int num = 0;
    4. //Insert one char from stringstream
    5. void Insert(char ch)
    6. {
    7. count[ch]++;
    8. index[ch] = num++;
    9. }
    10. //return the first appearence once char in current stringstream
    11. char FirstAppearingOnce()
    12. {
    13. int minIndex = num;
    14. char ch = '#';
    15. for (int i = 0; i < 128; i++) { // !!!
    16. if (count[i] == 1 && index[i] < minIndex) {
    17. ch = (char) i;
    18. minIndex = index[i];
    19. }
    20. }
    21. return ch;
    22. }