383. Ransom Note【E】

来源:互联网 发布:南华大学怎么样知乎 编辑:程序博客网 时间:2024/05/21 14:07


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") -> falsecanConstruct("aa", "ab") -> falsecanConstruct("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


0 0
原创粉丝点击