zoukankan      html  css  js  c++  java
  • 剑指offer54-字符流中第一个不重复的字符

    题目描述

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

    返回值描述:

    如果当前字符流没有存在出现一次的字符,返回#字符。

    代码

    # -*- coding:utf-8 -*-
    class Solution:
        # 返回对应char
        def __init__(self):
            self.stock={}
            self.queue=[]
        def FirstAppearingOnce(self):
            # write code here
            if len(self.queue)==0:
                return '#'
            return self.queue[0]
        def Insert(self, char):
            # write code here
            if char not in self.stock:
                self.queue.append(char)
                self.stock[char]=1          --这里stock可以是list,也可以是dict,只是为了记录char是否在之前出现过。
            else:
                try:
                    self.queue.remove(char)
                except:
                    pass

    测试可用:

    ss=Solution()
    ss.Insert("h")
    ss.FirstAppearingOnce()
    ss.Insert("e")
    ss.FirstAppearingOnce()
    ss.Insert( "l")
    ss.FirstAppearingOnce()
    ss.Insert( "l")
    ss.FirstAppearingOnce()
    ss.Insert( "o")
    ss.FirstAppearingOnce()
    ss.Insert( "w")
    ss.FirstAppearingOnce()
    ss.Insert( "o")
    ss.FirstAppearingOnce()
    ss.Insert( "l")
    ss.FirstAppearingOnce()
    ss.Insert( "d")
    ss.FirstAppearingOnce()
  • 相关阅读:
    OO第三单元总结
    oo第二单元总结
    oo第一单元总结
    OO助教工作总结
    当QSY遇上XL尺码的小黄衫
    终点亦是起点
    敏捷开发规范化
    Beta阶段性总结
    需求存在,功能存在——Alpha阶段性总结
    Gitlab Burndown Chart
  • 原文地址:https://www.cnblogs.com/foolangirl/p/14110627.html
Copyright © 2011-2022 走看看