383. Ransom Note【E】

本文介绍了一种简单的方法来判断给定的勒索信字符串是否可以从另一字符串中找到所有需要的字符,且确保源字符串中的每个字符仅被使用一次。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Given
 an 
arbitrary
 ransom
 note
 string 
and 
another 
string 
containing 
letters from
 all 
the 
magazines,
 write 
a 
function 
that 
will 
return 
true 
if 
the 
ransom 
 note 
can 
be 
constructed 
from 
the 
magazines ; 
otherwise, 
it 
will 
return 
false. 



Each 
letter
 in
 the
 magazine 
string 
can
 only 
be
 used 
once
 in
 your 
ransom
 note.

Note:
You may assume that both strings contain only lowercase letters.

canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true


Subscribe to see which companies asked this question

勒索信,为了不暴露字迹,就从杂志上搜索各个需要的字母,组成单词来表达的意思。这样来说,题目也就清晰了,判断杂志上的字是否能够组成勒索信需要的那些字符。 
这里需要注意的就是杂志上的字符只能被使用一次,不过不用考虑大小写的问题。 
有一种最简单的理解就是对于ransomNote里每个字符出现的次数必须小于或者等于该字符在magazine出现的次数。


class Solution(object):
    def canConstruct(self, ransomNote, magazine):
        #print ransomNote
        r = ransomNote
        m = magazine
        dic_r = {}
        dic_m = {}
        for i in r:
            dic_r[i] = dic_r.get(i,0) + 1
        for i in m:
            dic_m[i] = dic_m.get(i,0) + 1
        #print dic_r
        #print dic_m

        for k,v in dic_r.items():
            if k not in dic_m.keys():
                return False
            if v > dic_m[k]:
                return False
        return True


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值