← Back to Leo Academy Masterclass

Problem #383: Ransom Note

Easy Hashmap

Intuition & Strategy Breakdown

Count character frequencies of magazine in a hash map/array. Decrement counts for ransomNote; return false if count falls below zero.

Python Solution

class Solution:
    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        counts = collections.Counter(magazine)
        for c in ransomNote:
            if counts[c] <= 0:
                return False
            counts[c] -= 1
        return True

Java Solution

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        HashMap counts = new HashMap<>();
        for (char c : magazine.toCharArray()) {
            counts.put(c, counts.getOrDefault(c, 0) + 1);
        }
        for (char c : ransomNote.toCharArray()) {
            if (!counts.containsKey(c) || counts.get(c) <= 0) {
                return false;
            }
            counts.put(c, counts.get(c) - 1);
        }
        return true;
    }
}
Watch Interactive Video on Leo Academy Main App