1. 程式人生 > >劍指offer 54. 字元流中第一個不重複的字元

劍指offer 54. 字元流中第一個不重複的字元

題目描述

請實現一個函式用來找出字元流中第一個只出現一次的字元。例如,當從字元流中只讀出前兩個字元"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:

題沒什麼難度,就是多了插入函式。