题解 | #字符流中第一个不重复的字符#

字符流中第一个不重复的字符

http://www.nowcoder.com/practice/00de97733b8e4f97a3fb5c680ee10720

类似#第一个只出现一次的字符# https://blog.nowcoder.net/n/6aa6f3ed254041a88572510af837616e

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.s=''
        self.mydict={}
        
    def FirstAppearingOnce(self):
        for i in self.s:
            if self.mydict[i]==1:
                return i 
        return '#'
                
    def Insert(self, char):
        self.s=self.s+char
        if char not in self.mydict:
            self.mydict[char]=1
        else:
            self.mydict[char]=self.mydict[char]+1
  1. 根据后台输入方式来设计函数

后台会用以下方式调用 Insert 和 FirstAppearingOnce 函数: 循环遍历字符串里的每一个字符ch { Insert(ch); caseout += FirstAppearingOnce() }

所以insert函数是逐个字符输入进去的,自变量char表示输入一个字符。FirstAppearingOnce函数要求逐次返回的一个字符(当前字符流只出现一次的那个字符)。

2.设计函数。Insert函数用来记录,插入char后,每个字符出现的次数。FirstAppearingOnce用来对每个字符查哈希表,返回第一个计数为1的字符。

3.小提示:这里要设计初始化__init__方法,使得实例一开始就拥有类模板所具有的属性。如果不这样设计的话,输入的字符串没法连续记录,还有字典也没有初始化。

如果在函数体(准确的说是类的方法),比如Insert里面再初始化字典,会导致每次调用会重新初始化一次。btw,__init__方法就是用来专门干初始化赋属性这活儿,本来就应该在这儿写初始化,加强理解。

全部评论

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
今天 11:11
已编辑
Imperial College London Java
汇丰科技 oc 18*12 + 年终
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务