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

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

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__方法就是用来专门干初始化赋属性这活儿,本来就应该在这儿写初始化,加强理解。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务