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()
  • 相关阅读:
    java8--面向对象 下(疯狂java讲义3) 复习笔记
    java8--面向对象 上(疯狂java讲义3) 复习笔记
    my.cnf配置详解[转载]
    java8--集合(疯狂java讲义3复习笔记)
    java8--网络编程(java疯狂讲义3复习笔记)
    Technocup 2017
    Technocup 2017
    Technocup 2017
    Technocup 2017
    Codeforces Round #396 (Div. 2) E
  • 原文地址:https://www.cnblogs.com/foolangirl/p/14110627.html
Copyright © 2011-2022 走看看