# -*- coding:utf-8 -*-
'''
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。
'''


class Solution:
    def __init__(self):
        self.array = [-1 for i in range(256)]
        self.index = 0

    # 返回对应char
    def FirstAppearingOnce(self):
        i = 0
        min = -1
        index = 0
        for itemArray in self.array:
            if itemArray != -1 and itemArray != -2:
                if min == -1:
                    min = itemArray
                    index = i
                elif itemArray < min:
                    min = itemArray
                    index = i
            i += 1
        if min == -1:
            return '#'
        return chr(index)

    def Insert(self, char):
        intChar = ord(char)
        if self.array[intChar] > -1:
            self.array[intChar] = -2
        else:
            self.array[intChar] = self.index
            self.index += 1


s = Solution()
s.Insert('g')
print s.FirstAppearingOnce()
s.Insert('o')
print s.FirstAppearingOnce()
s.Insert('o')
print s.FirstAppearingOnce()
s.Insert('g')
print s.FirstAppearingOnce()
s.Insert('l')
print s.FirstAppearingOnce()
s.Insert('e')
print s.FirstAppearingOnce()