383. Ransom Note 🔍
Difficulty: Easy - Tags: Hash Table, String
Problem Statement 📜
Given two strings ransomNote and magazine, return true if ransomNote can be constructed by using the letters from magazine and false otherwise.
Each letter in magazine can only be used once in ransomNote.
Examples 🌟
🔹 Example 1:
Input:
ransomNote = "a", magazine = "b"Output:
false🔹 Example 2:
Input:
ransomNote = "aa", magazine = "ab"Output:
false🔹 Example 3:
Input:
ransomNote = "aa", magazine = "aab"Output:
trueConstraints ⚙️
1 <= ransomNote.length, magazine.length <= 10^5ransomNoteandmagazineconsist of lowercase English letters.
Solution 💡
To solve this problem, we can use a hash map to count the occurrences of each character in magazine. Then, we check if each character in ransomNote can be satisfied using the character counts.
Java Solution
import java.util.HashMap;
import java.util.Map;
class Solution1 {
public boolean canConstruct(String ransomNote, String magazine) {
Map<Character, Integer> charCountMap = new HashMap<>();
// Count characters in magazine
for (char c : magazine.toCharArray()) {
if (charCountMap.containsKey(c)) {
charCountMap.put(c, charCountMap.get(c) + 1);
} else {
charCountMap.put(c, 1);
}
}
// Check if ransomNote can be formed
for (char c : ransomNote.toCharArray()) {
if (charCountMap.containsKey(c) && charCountMap.get(c) > 0) {
charCountMap.put(c, charCountMap.get(c) - 1);
} else {
return false;
}
}
return true;
}
}Explanation of the Solution
Count Characters in Magazine:
Use a
HashMapto store the frequency of each character inmagazine.
Validate Ransom Note:
Iterate through
ransomNoteand check if the required character is available in theHashMapwith a count greater than 0.If available, decrement the count. If not, return
false.
Result:
If all characters in
ransomNoteare satisfied, returntrue.
Time Complexity ⏳
O(m + n):
mis the length ofransomNote.nis the length ofmagazine.Both strings are traversed once.
Space Complexity 💾
O(k):
kis the number of unique characters inmagazine.Space used by the
HashMap.
You can find the full solution here.
Last updated
Was this helpful?