博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer——python【第54题】字符流中第一个不重复的字符
阅读量:4945 次
发布时间:2019-06-11

本文共 1227 字,大约阅读时间需要 4 分钟。

题目描述

请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。如果当前字符流没有存在出现一次的字符,返回#字符。

思路

和前面的那道字符串中只出现一次的字符相似而不相同,前面那道是固定长度字符串,而本题是字符流,也就是会增长的,每次字符串多一个字符,就要重新判断是哪个只出现一次的字符

因为牛客网里剑指offer的python只有2.7,没有3.0以上的版本,而python2.7的字典遍历通常不是有序的(python3通常有序),所以只能再借助一个列表来存储全部字符串,遍历字符串从而寻找

解答

class Solution:    # 返回对应char    def __init__(self):        self.charDict = {}#存放字符和对应的数量        self.charlist = []#存放字符    def FirstAppearingOnce(self):        # write code here        for key in self.charlist:            if self.charDict[key]==1:                return key        return '#'    def Insert(self, char):        # write code here        self.charDict[char]=1 if char not in self.charDict else self.charDict[char]+1        self.charlist.append(char)

其实再想一下,把字典去掉也完全可以啊,这跟那道固定长度的只出现一次字符串没有本质的区别

class Solution:    # 返回对应char    def __init__(self):        self.charlist = []    def FirstAppearingOnce(self):        # write code here        for key in self.charlist:            if self.charlist.count(key)==1:                return key        return '#'    def Insert(self, char):        # write code here        self.charlist.append(char)

 

转载于:https://www.cnblogs.com/yqpy/p/9569448.html

你可能感兴趣的文章
【转】Android Hook框架Xposed详解
查看>>
Android 有用代码片段总结
查看>>
英语各种时态例句
查看>>
从下往上看--新皮层资料的读后感 第三部分 70年前的逆向推演- 从NN到ANN
查看>>
(转)系统引导管理器GRUB详解
查看>>
数据访问C#入门经典第21章-读写压缩数据
查看>>
PHP超时处理全面总结(转)
查看>>
利用python进行数据分析--pandas入门2
查看>>
[zz]使用 libevent 和 libev 提高网络应用性能
查看>>
Linux故障处理最佳实践
查看>>
6标准文件读写
查看>>
jsTree 核心功能(core functionality) API
查看>>
Perl oop链接数据库
查看>>
网络虚拟化我眼中的OpenFlow
查看>>
[leetcode] 3. Longest Substring Without Repeating Characters
查看>>
06 Frequently Asked Questions (FAQ) 常见问题解答 (常见问题)
查看>>
获取判断IE版本 TypeError: Cannot read property 'msie' of undefined
查看>>
tcpreplay安装使用
查看>>
自增锁
查看>>
ps命令学习
查看>>