Problem
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
.
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: true
Constraints:
1 <= ransomNote.length, magazine.length <= 105
ransomNote
andmagazine
consist of lowercase English letters.
Solution - Hash Map - O(n)
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
unordered_map<char, int> magazineMap;
for(char i : magazine) {
magazineMap[i] += 1;
}
for(char i : ransomNote) {
if (magazineMap[i] != 0) magazineMap[i] -= 1;
else return false;
}
return true;
}
};