0383 - Ransom Note

0383 - Ransom Note

Given two stings ransomNote and magazine, return true if ransomNote can be constructed from magazine and false otherwise.

Each letter in magazine can only be used once in ransomNote.

Examples

Input: ransomNote = "a", magazine = "b" Output: false

Input: ransomNote = "aa", magazine = "ab" Output: false

Input: ransomNote = "aa", magazine = "aab" Output: true

Constraints

1 <= ransomNote.length, magazine.length <= 105 ransomNote and magazine consist of lowercase English letters.

Java Solution

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        if(ransomNote.length() > magazine.length()) return false;
        
        HashMap<Character, Integer> hm = new HashMap<>();
        
        for(int i = 0; i < magazine.length(); i++) {
            hm.put(magazine.charAt(i), hm.getOrDefault(magazine.charAt(i), 0) + 1);
        }
        
        for(char c : ransomNote.toCharArray()) {
            if(hm.containsKey(c) && hm.get(c) > 0) hm.put(c, hm.get(c)-1);
            else return false;
        }
        
        return true;
    }
}

Last updated