• 剑指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()
  • 相关阅读:
    zzuli oj 1120 最值交换
    zzuli oj 1119 一维数组排序
    zzuli oj 1118 数列有序
    zzuli oj 1117 查找数组元素
    寒假集训 字符串专题 1001
    zzuli oj 1116
    A
    Codeforces Round #615 (Div. 3) E. Obtain a Permutation
    Codeforces Round #615 (Div. 3) F. Three Paths on a Tree
    Codeforces Round #603 (Div. 2)F. Economic Difficulties
  • 原文地址:https://www.cnblogs.com/foolangirl/p/14110627.html
Copyright © 2020-2023  润新知