• 剑指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()
  • 相关阅读:
    platform_device和platform_driver
    理解和认识udev
    platform_device和platform_driver
    bzImage的概要生成过程
    shell 字符表
    分析mtk6516如何加入自己的驱动
    理解和使用Linux的硬件抽象层HAL
    bzImage的概要生成过程
    理解和认识udev
    shell 字符表
  • 原文地址:https://www.cnblogs.com/foolangirl/p/14110627.html
Copyright © 2020-2023  润新知