JZ54 字符流中第一个不重复的字符

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

题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。
思路:开始以为这一道题有很流弊的解法,把自己想的unordered_map的方法放在一边,其实就是使用一个256大的数组模拟哈希就行了,每次插入记得统计目前该字符有多少个了,然后遍历一边这个vector,就可以找到第一个出现的。不过需要注意只对一个类进行操作。
func Insert(ch byte) {
    src = append(src, ch)
    count[ch]++
}

func FirstAppearingOnce() byte {
    for _, ch := range src {
        if count[ch] == 1 {
            return ch
        }
    }
    return '#'
}

var count = make([]byte, 256)
var src []byte
原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14642528.html