题目链接:https://leetcode.com/problems/ransom-note
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
class Solution(object):
def canConstruct(self, ransomNote, magazine):
"""
:type ransomNote: str
:type magazine: str
:rtype: bool
"""
dir_r={}
dir_m={}
for i in ransomNote:
dir_r[i]=dir_r.get(i,0)+1
for i in magazine:
dir_m[i]=dir_m.get(i,0)+1
for k,v in dir_r.items():
if k not in dir_m.keys():
return False
elif dir_r[k]>dir_m[k]:
return False
return True