题:实现一个函数用来找出字符流中第一个只出现一次的字符。如果当前字符流没有存在出现一次的字符,返回#字符。
- #利用字典这种数据结构,字符串为关键字,来统计每个关键字的对应次数。
class Solution:
# 返回对应char
def __init__(self):
self.str=''
self.dic={}
def FirstAppearingOnce(self):
for i in self.str:
if self.dic[i]==1:#遍历字符看字典中对应键值,找到等于1就返回 跳出循环
return i
return '#'
def Insert(self, char):
self.str+=char
if char in self.dic: #判断每个字符是否在字典中,如果在,就在字典中将对应键值+1
self.dic[char]+=1
else: #否则将关键字更新到字典中,其键的值为1
self.dic[char]=1
后台会用以下方式调用 Insert 和 FirstAppearingOnce 函数
string caseout = "";
1.读入测试用例字符串casein
2.如果对应语言有Init()函数的话,执行Init() 函数
3.循环遍历字符串里的每一个字符ch {
Insert(ch);
caseout += FirstAppearingOnce()
}
2. 输出caseout,进行比较。
2.BM52 数组中只出现一次的两个数字
题:一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。输出时按非降序排列。
遍历数组,用哈希表统计每个数字出现的频率。
然后再遍历一次哈希表。
class Solution:
def FindNumsAppearOnce(self , array: List[int]) -> List[int]:
dic,res={},[]
for i in array:
dic[i]=dic.get(i,0)+1
for k,v in dic.items():
if v==1:
res.append(k)
if len(res)==2:
break
res.sort()
return res