请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
python 字典:
这题会用到python 的字典,也因此可以把字典拿出来看看。之前已经涉及到了比如字符串,然后更多的是列表list,还有就是独一无二的集合set。
https://www.runoob.com/python/python-dictionary.html
分析题目
题目字符串流一开始还是听懵逼的这是啥,然后看了别人的分析应该是一个个字符的输入如果当前字符是唯一一个的话还是第一个的话那么我们就输出。
那为何用到了字典呢?这里应该是输入一个字母,如果他在字典中,那么这个字母作为key值,他对应的数就会加一否则的话,他就是1.
def Insert(self, char):
self.s = self.s +char
if char in self.dict:
self.dict[char] +=1
else:
self.dict[char] =1
所以这里我们就完成了,每个字符串来我们就统计一下,看下他有几个对吧,但是我们要输出的是第一个的唯一一个。因此还要写另一个方法的地方。
def FirstAppearingOnce(self):
for z in self.s:
if self.dict[z] == 1:
return z
return '#'
所以合并的代码就是如下啦:
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.dict = {}
self.s = ''
def FirstAppearingOnce(self):
for z in self.s:
if self.dict[z] == 1:
return z
return '#'
# write code here
def Insert(self, char):
self.s = self.s +char
if char in self.dict:
self.dict[char] +=1
else:
self.dict[char] =1
# write code here
总结来说:首先是字典的作用在这里体现出来,所以我们要非常熟悉什么时候用列表,什么时候用字典,什么时候用集合set,什么时候用字符串等等。