劍指offer:字符流中第一個不重複的字符

題目描述
請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符「google"時,第一個只出現一次的字符是"l"。
輸出描述:
若是當前字符流沒有存在出現一次的字符,返回#字符。ide

from collections import defaultdict

class Solution:
    """
    雖然是要從字符流中獲取首個第一次出現的字符,可是本質上和在字符串中作一樣的事沒有什麼區別,
    惟一的區別就在於要記錄字符流的輸入順序。
    """
    def __init__(self):
        self.char_count = defaultdict(int)
        self.sequence = ''

    def FirstAppearingOnce(self):
        # 遍歷字符流的輸入,而後找出第一個只出現一次的字符
        for c in self.sequence:
            if self.char_count[c] == 1:
                return c
        return '#'

    def Insert(self, char):
        for c in char:
            self.sequence += c
            self.char_count[c] += 1
相關文章
相關標籤/搜索