剑指Offer 54. 字符流中第一个不重复的字符 (其他)

Posted on 2018-10-17 16:49  _hqc  阅读(122)  评论(0编辑  收藏  举报

题目描述

请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。

输出描述:

如果当前字符流没有存在出现一次的字符,返回#字符。
题目地址
https://www.nowcoder.com/practice/00de97733b8e4f97a3fb5c680ee10720?tpId=13&tqId=11207&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
思路
将字节流保存起来,通过哈希表统计字符流中每个字符出现的次数,顺便将字符流保存在string中,然后再遍历string,从哈希表中找到第一个出现一次的字符。
Python
# -*- coding:utf-8 -*-
class Solution:
    # 返回对应char
    def FirstAppearingOnce(self):
        # write code here
        for i in self.word:
            if self.charCount[i] == 1:
                return i
        return '#'

    def Insert(self, char):
        # write code here
        self.word += char
        if char not in self.charCount:
            self.charCount[char] = 1
        else:
            self.charCount[char] += 1
    def __init__(self):
        self.word = ''
        self.charCount = {}


if __name__ == '__main__':
    word = 'google'
    S = Solution()
    for c in word:
        S.Insert(c)
    result = S.FirstAppearingOnce()
    print(result)