15 Jun 2024C++ / Python / TypeScriptEasy

Ransom Note

Collected C++, Python, TypeScript solutions for ransom note. Add a dedicated write-up later if you want deeper notes.

auto-generated entry for Ransom Note. the solution files are available below.

solution files

  • C++ ransom-note/synced-solution.cpp
  • Python ransom-note/synced-solution.py
  • TypeScript ransom-note/synced-solution.ts

Solution files

Pythonransom-note/synced-solution.py
def canConstruct(ransomNote, magazine):
    from collections import Counter

    ransom_count = Counter(ransomNote)
    magazine_count = Counter(magazine)

    for char, count in ransom_count.items():
        if magazine_count[char] < count:
            return False

    return True
C++ransom-note/synced-solution.cpp
class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        unordered_map<char, int> count;

        for (char c : magazine) {
            count[c]++;
        }

        for (char c : ransomNote) {
            if (count[c] <= class="syntax-number">0) {
                return false;
            }
            count[c]--;
        }

        return true;
    }
};
TypeScriptransom-note/synced-solution.ts
function canConstruct(ransomNote: string, magazine: string): boolean {
    const count = new Map<string, number>();

    for (const char of magazine) {
        count.set(char, (count.get(char) || class="syntax-number">0) + class="syntax-number">1);
    }

    for (const char of ransomNote) {
        if ((count.get(char) || class="syntax-number">0) <= class="syntax-number">0) {
            return false;
        }
        count.set(char, count.get(char)! - class="syntax-number">1);
    }

    return true;
}