剑指offer:字符流中第一个不重复的字符

发布时间:2020-04-13 22:39:51 作者:Jayce_SYSU
来源:网络 阅读:343

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

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
推荐阅读:
  1. 剑指offer:第一个只出现一次的字符
  2. 剑指offer:最长不含重复字符的子字符串

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

空间换时间 第一

上一篇:memset to struct 引起的 core

下一篇:【基础】固定列宽的表格及示例演示

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》