剑指offer-字符流中第一个不重复的字符-字符串-python
题目描述
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。
思路:使用两个队列保存字符,第一个保存只出现一次的,第二个保存所有字符。
class Solution: def __init__(self): self.s = '' self.queue = [] #按顺序保存所有只出现一次的字符 self.second = [] #按顺序保存所有出现过的字符 def FirstAppearingOnce(self): if self.queue: return self.queue[0] return '#' def Insert(self, char): self.s += char if char in self.queue: self.queue.pop(self.queue.index(char)) elif char not in self.second: self.queue.append(char) self.second.append(char)