字节流中第一个不重复的字符
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
思路
队列先进先出。
每次插入char,判断队列中是否存在,已存在就不插入。
因此,队列中保存的元素都是不重复的,并且字节流中出现较早的元素在队列中靠前。
代码
# -*- coding:utf-8 -*-
class Solution:
# 返回对应char
def FirstAppearingOnce(self): #时间复杂度O(n),空间复杂度O(n)
# write code here
if not self.charList:
return '#'
return self.charList[0] #队列先进先出
def Insert(self, char):
# write code here
if not self.charList: #队列为空
self.charList.append(char)
elif char in self.charList: #队列中已存在char,char重复
self.charList.remove(char)
else: #队列中不包含
self.charList.append(char)
def __init__(self):
self.charList = []
if __name__ == "__main__":
charStr = 'google'
solution = Solution()
for char in charStr:
solution.Insert(char)
print solution.FirstAppearingOnce(),