DEV Community

Cover image for LeetCode Challenge: 383. Ransom Note - JavaScript Solution πŸš€
Rahul Kumar Barnwal
Rahul Kumar Barnwal

Posted on

2 1 1 1 1

LeetCode Challenge: 383. Ransom Note - JavaScript Solution πŸš€

Top Interview 150

The Ransom Note problem is a simple string manipulation challenge that tests your ability to manage character counts efficiently. Let’s solve LeetCode 383 step by step.


πŸš€ Problem Description

Given two strings ransomNote and magazine:

  • Return true if ransomNote can be constructed using letters from magazine.
  • Each letter in magazine can only be used once in ransomNote.

πŸ’‘ Examples

Example 1

Input: ransomNote = "a", magazine = "b"  
Output: false
Enter fullscreen mode Exit fullscreen mode

Example 2

Input: ransomNote = "aa", magazine = "ab"  
Output: false
Enter fullscreen mode Exit fullscreen mode

Example 3

Input: ransomNote = "aa", magazine = "aab"  
Output: true
Enter fullscreen mode Exit fullscreen mode

πŸ† JavaScript Solution

We solve this problem by counting the occurrences of each letter in magazine and comparing them with the required counts for ransomNote.


Implementation

var canConstruct = function(ransomNote, magazine) {
    const charCount = {};

    for (let char of magazine) {
        charCount[char] = (charCount[char] || 0) + 1;
    }

    for (let char of ransomNote) {
        if (!charCount[char] || charCount[char] <= 0) {
            return false;
        }
        charCount[char]--;
    }

    return true;
};
Enter fullscreen mode Exit fullscreen mode

πŸ” How It Works

  1. Count Characters in Magazine:

    • Create a hash map (charCount) to store the frequency of each character in magazine.
  2. Validate Against Ransom Note:

    • Iterate through each character in ransomNote.
    • Check if the character is available in charCount.
    • If not, return false.
    • Decrement the count of the character in charCount.
  3. Return Result:

    • If all characters are found with sufficient counts, return true.

πŸ”‘ Complexity Analysis

  • Time Complexity: O(n+m), where n is the length of magazine and m is the length of ransomNote.

    • Counting characters in magazine takes O(n).
    • Validating ransomNote takes O(m).
  • Space Complexity: O(k), where k is the number of unique characters in magazine.


πŸ“‹ Dry Run

Input: ransomNote = "aa", magazine = "aab"
Dry RUn

Output: true


✨ Pro Tips for Interviews

  1. Clarify Constraints:

    • Ensure that ransomNote and magazine only contain lowercase letters.
    • Ask about edge cases, such as empty strings.
  2. Discuss Optimizations:

    • Highlight how using a hash map ensures efficient character counting.
  3. Edge Cases:

    • ransomNote longer than magazine β†’ immediately return false.
    • All characters in magazine but insufficient counts.

πŸ“š Learn More

Check out the full explanation and code walkthrough on my previous Dev.to post:
πŸ‘‰ Set Matrix Zeroes - JavaScript Solution

What’s your preferred method to solve this problem? Let’s discuss! πŸš€


Study

Quadratic AI

Quadratic AI – The Spreadsheet with AI, Code, and Connections

  • AI-Powered Insights: Ask questions in plain English and get instant visualizations
  • Multi-Language Support: Seamlessly switch between Python, SQL, and JavaScript in one workspace
  • Zero Setup Required: Connect to databases or drag-and-drop files straight from your browser
  • Live Collaboration: Work together in real-time, no matter where your team is located
  • Beyond Formulas: Tackle complex analysis that traditional spreadsheets can't handle

Get started for free.

Watch The Demo πŸ“Šβœ¨

Top comments (1)

Collapse
 
rahulgithubweb profile image
Rahul Kumar Barnwal β€’

Follow Me on GitHub πŸš€

If you found this solution helpful, check out more of my projects and solutions on my GitHub profile.

Don't forget to follow for more updates!

Image of PulumiUP 2025

Explore What’s Next in DevOps, IaC, and Security

Join us for demos, and learn trends, best practices, and lessons learned in Platform Engineering & DevOps, Cloud and IaC, and Security.

Save Your Spot

πŸ‘‹ Kindness is contagious

Explore a trove of insights in this engaging article, celebrated within our welcoming DEV Community. Developers from every background are invited to join and enhance our shared wisdom.

A genuine "thank you" can truly uplift someone’s day. Feel free to express your gratitude in the comments below!

On DEV, our collective exchange of knowledge lightens the road ahead and strengthens our community bonds. Found something valuable here? A small thank you to the author can make a big difference.

Okay