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

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

被折叠的 条评论
为什么被折叠?



