请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"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