题目描述:
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。
思路:
Insert函数用来接收字符,构成字符流。FirstAppearingOnce函数用来判断是否为第一个只出现一次的字符。
用了字典来记录字符以及出现的次数。
比如 google :
先 插入 g,出现次数为 1,返回 g
再插入o,则字符流为 go,出现次数都为 1,但是第一个只出现一次的字符为 g ,返回 g
再插入 o,则字符流为 goo,出现次数为 1,2,第一个只出现一次的字符为 g ,返回 g
再插入g,则字符流为 goog,出现次数为 2,2,不存在第一个只出现一次的字符 ,返回 #
再插入 l,则字符流为googl,出现次数为2,2,1,第一个只出现一次的字符为 l,返回 l
Python实现1:
// An highlighted block
# -*- coding:utf-8 -*-
class Solution:
# 返回对应char
def __init__(self):
self.string_all = {}
self.ch = []
def FirstAppearingOnce(self):
# write code here
if self.string_all is None:
return '#'
for i in self.ch:
if self.string_all[i] == 1:
return i
return '#'
def Insert(self, char):
# write code here
self.ch.append(char)
if char in self.string_all:
self.string_all[char] = self.string_all[char] + 1
else:
self.string_all[char] = 1
原文:https://blog.csdn.net/Lynette_bb/article/details/74999712
思路:使用字典统计
python实现2:
// An highlighted block
from collections import Counter
class Solution:
def __init__(self):
self.words = []
# 返回对应char
def FirstAppearingOnce(self):
# write code here
remm = Counter(self.words)
for char in self.words:
if remm[char] ==1:
return char
return '#'
def Insert(self, char):
# write code here
self.words.append(char)