一、题目解析
请实现一个函数用来找出字符流中第一个只出现一次的字符。
例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
如果当前字符流没有存在出现一次的字符,返回#字符。
本题如果不看牛客上的核心代码,我首先想到的是利用字符串获取首位和末位索引的方式判断字符是否是只出现一次(string.indexOf()和string.lastIndexOf()
),但是给的核心代码是:
这就不好操作了,这里需要先插入字符串,然后再查找第一个只出现1次的字符:
可以看出这其实是一个对应关系,key-value 的对应关系,所以可以利用 linkedHashMap
(无序存放,key不允许重复)
二、代码