劍指offer 54. 字元流中第一個不重複的字元
阿新 • • 發佈:2018-11-26
題目描述
請實現一個函式用來找出字元流中第一個只出現一次的字元。例如,當從字元流中只讀出前兩個字元"go"時,第一個只出現一次的字元是"g"。當從該字元流中讀出前六個字元“google"時,第一個只出現一次的字元是"l"。
輸出描述:
其實主要就是多了插入函式,出現字元。
引入兩個輔助儲存空間。一個Dict儲存當前出現的字元以及字元出現的次數,一個List儲存當前出現字元。
然後每次比較List的第一個字元在Dict中對應的次數,如果為1則輸出這個字元,如果不為1則彈出這個字元比較下一個字元
思路:
這道題有點取巧了,直接利用float強轉,可得到答案。
當然也有其他方法,如也可以引入正則表示式進行匹配。
參考答案:
# -*- coding:utf-8 -*-
class Solution:
# 返回對應char
def __init__(self):
self.input_list = []
self.input_dict = {}
def FirstAppearingOnce(self):
# write code here
while len(self.input_list) > 0 and self.input_dict[self.input_list[0]] > 1:
self. input_list.pop(0)
if len(self.input_list) == 0:
return '#'
else:
return self.input_list[0]
def Insert(self, char):
# write code here
if char not in self.input_dict.keys():
self.input_dict[char] = 1
self.input_list.append( char)
else:
self.input_dict[char] += 1
Note:
題沒什麼難度,就是多了插入函式。