75 字符流中第一个不重复的字符、BM52 数组中只出现一次的两个数字

45 篇文章 1 订阅
1 篇文章 0 订阅

题:实现一个函数用来找出字符流中第一个只出现一次的字符。如果当前字符流没有存在出现一次的字符,返回#字符。

  •  #利用字典这种数据结构,字符串为关键字,来统计每个关键字的对应次数。
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
                

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值