[Leetcode] 每日两题 423 1287 -day20

423. 从英文中重建数字

请添加图片描述
打一个表,独一无二字母的单词放前面 防止后面把前面的字母用了,然后统计s中各个字母的个数,然后挨个判断呗, 记得判断成功的单词再判断一遍

class Solution:
    def originalDigits(self, s: str) -> str:
        litter =  ["zero","six","eight","two","seven","five","four","three","one","nine"]
        num = [0,6,8,2,7,5,4,3,1,9]
        count = Counter(s)
        lis=[]
        i = 0
        while i < 10:
            flag = 1 
            for a in litter[i]:
                if count[a] == 0:
                    flag =0
                    break
            if flag:
                lis.append(num[i])
                for a in litter[i]:
                    count[a] -=1
            else :
                i +=1
        lis =sorted(lis)
        str1="".join([str(_) for _ in lis])
        return str1

简易代码 如下 取巧

class Solution:
    def originalDigits(self, s: str) -> str:
        
        cnt = Counter(s)
        return "0" * cnt["z"] + \
               "1" * (cnt["o"] - cnt["z"] - cnt["u"] - cnt["w"]) + \
               "2" * cnt["w"] + \
               "3" * (cnt["r"] - cnt["z"] - cnt["u"]) + \
               "4" * cnt["u"] + \
               "5" * (cnt["v"] - cnt["s"] + cnt["x"]) + \
               "6" * cnt["x"] + \
               "7" * (cnt["s"] - cnt["x"]) + \
               "8" * (cnt["t"] - cnt["w"] - cnt["r"] + cnt["z"] + cnt["u"]) + \
               "9" * ((cnt["n"] - cnt["s"] + cnt["x"] - cnt["o"] + cnt["z"] + cnt["u"] + cnt["w"]) // 2)
1287. 有序数组中出现次数超过25%的元素

请添加图片描述

哈希表 扫一遍存一下 扫的过程中如果发现值大于0.25倍的长度 那直接返回

class Solution:
    def findSpecialInteger(self, arr: List[int]) -> int:
        dic = defaultdict(int)
        leng = len(arr)
        for num in arr:
            dic[num] +=1
            if dic[num] >leng*0.25:
                return num
        return -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值