題目描述
請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù)用來(lái)找出字符流中第一個(gè)只出現(xiàn)一次的字符绿聘。例如惰爬,當(dāng)從字符流中只讀出前兩個(gè)字符"go"時(shí)金刁,第一個(gè)只出現(xiàn)一次的字符是"g"循签。當(dāng)從該字符流中讀出前六個(gè)字符“google"時(shí)级乐,第一個(gè)只出現(xiàn)一次的字符是"l"。
如果當(dāng)前字符流沒有存在出現(xiàn)一次的字符县匠,返回#字符唇牧。
思路
分別創(chuàng)建一個(gè)list和一個(gè)dict
list記錄出現(xiàn)過的字符,有序聚唐,不可計(jì)數(shù)。
dict記錄出現(xiàn)過的字符出現(xiàn)的次數(shù)腔召,可計(jì)數(shù)杆查,但無(wú)序。
代碼
class Solution:
# 返回對(duì)應(yīng)char
def __init__(self):
#記錄出現(xiàn)的字符
self.char_list = []
#記錄出現(xiàn)的字符的出現(xiàn)次數(shù)
self.char_dict = {}
def FirstAppearingOnce(self):
#沒有字符流臀蛛,直接返回 #
if len(self.char_list) == 0:
return '#'
for i in range(len(self.char_list)):
if self.char_dict[self.char_list[i]] == 1:
return self.char_list[i]
#有字符流亲桦,但是遍歷完全部的崖蜜,依舊沒有不重復(fù)的,返回 #
return '#'
def Insert(self, char):
if char not in self.char_dict.keys():
self.char_list.append(char)
self.char_dict[char] = 1
else:
self.char_dict[char] += 1