Skip to content

Latest commit

 

History

History
49 lines (32 loc) · 1.19 KB

字符流中第一个不重复的字符.md

File metadata and controls

49 lines (32 loc) · 1.19 KB

题目

请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。 当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。

如果当前字符流没有存在出现一次的字符,返回#字符。

思路

要求获得第一个只出现一次的。

使用一个有序的存储结构为每个字符计数,再遍历这个对象,第一个出现次数为1的即为结果。

在JavaScript中有序存储空间选择对象即可。

代码

    let container = {};
    function Init() {
      container = {};
    }
    function Insert(ch) {
      container[ch] = container[ch] ? container[ch] + 1 : 1;
    }
    function FirstAppearingOnce() {
      for (const key in container) {
        if (container[key] === 1) {
          return key;
        }
      }
      return '#';
    }

在剑指offer中的思路:使用字符ascii码作为下标声明一个数组

数组存储: -1:从未出现过 -2:出现过多次 下标:只出现一次

最后取下标大于-1的最小值

考察点

  • 字符串
  • hash