卷上卷队——钟某人的刷题日常day15——力扣的日常

为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。

给你一个赎金信 (ransomNote) 字符串和一个杂志(magazine)字符串,判断 ransomNote 能不能由 magazines 里面的字符构成。

如果可以构成,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。

这个……怎么说呢,我本来的想法就是,将他们做成列表,然后相同的顶掉,剩下的不同就返回true或false,接下来先上代码

ransomNote = "aa"
magazine = "aab"
magazine_list = []
ransomNote_list = []
bools = 0
for i in magazine:
    magazine_list.append(i)
for j in ransomNote:
    ransomNote_list.append(j)
for k in range(len(ransomNote_list)):
    try:
        if ransomNote_list[0] == magazine_list[magazine_list.index(ransomNote_list[0])]:
            bools += 1
            magazine_list.remove(magazine_list[magazine_list.index(ransomNote_list[0])])
            ransomNote_list.remove(ransomNote_list[0])
        else:
            bools = 0
            break
    except:
        bools = 0
        break
print(bool(bools))

主要是我在力扣上面看到我的提交记录,速度极慢,使用内存极高,然后……我就emo了,然后我了解到,这个似乎要用到哈希算法,然后我放个哈希的简单点的答案

class Solution:
    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
 
        arr = [0] * 26
 
        for x in magazine:
            arr[ord(x) - ord('a')] += 1
 
        for x in ransomNote:
            if arr[ord(x) - ord('a')] == 0:
                return False
            else:
                arr[ord(x) - ord('a')] -= 1
        
        return True

然后放个离谱过头的答案,虽然思路跟我是一样的,但是我只能感叹,这也太暴力了吧

class Solution(object):
    def canConstruct(self, ransomNote, magazine):
        """
        :type ransomNote: str
        :type magazine: str
        :rtype: bool
        """
        a = list(ransomNote)
        b = list(magazine)
        
        try:
            for i in a:
                b.remove(i)
            return True
        except:
            return False

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值