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

The key is using set and count in python

Not only we need to make sure all the element in ransomNote has in magazine, but also we need to make sure their numbers are less than it in magazine:

class Solution:
    def canConstruct(self, ransomNote:str, magazine:str) -> bool:
    for i in set(ransomNote):
        if ransomNote.count(i) > magazine.count(i):
            return False
    return True

set is unordered collections of unique elements then we just count the number of set element in both string

There is some other Java solutions