劍指Offer 字元流中第一個只出現一次的字元
阿新 • • 發佈:2018-12-10
題目:
請實現一個函式用來找出字元流中第一個只出現一次的字元。例如,當從字元流中只讀出前兩個字元”go”時,第一個只出現一次的字元是’g’。當從該字元流中讀出前六個字元”google”時,第一個只出現一次的字元是’l’。如果當前字元流沒有存在出現一次的字元,返回#字元。
樣例
輸入:“google”
輸出:“ggg#ll”
解釋:每當字元流讀入一個字元,就進行一次判斷並輸出當前的第一個只出現一次的字元。
解答:
class Solution:
def __init__(self):
self.d = {}
self.ind = 0
def firstAppearingOnce(self):
"""
:rtype: str
"""
minInd = self.ind
ch = None
for i in self.d:
if len(self.d[i]) == 1 and self.d[i][0] < minInd:
minInd = self.d[i][0]
ch = i
return ch if ch else '#'
def insert(self, char):
"""
:type char: str
:rtype: void
"""
if char not in self.d:
self.d[char] = [self.ind]
else:
self.d[char].append(self.ind)
self.ind += 1