#include <unordered_map>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param ransomNote string字符串
     * @param magazine string字符串
     * @return bool布尔型
     */
    bool canConstruct(string ransomNote, string magazine) {
        // write code here
        unordered_map<char, int>  map1;
//先将r中的元素和出现次数存起来
        for (char c : ransomNote) {
            if (map1.count(c)) {
                map1[c]++;
            } else {
                map1[c] = 1;
            }
        }
	  //便利m中的元素,如果map1中有,就减一,没有就跳过
        for (char c : magazine) {
            if (map1.count(c)) {
                map1[c]--;
            } else {
                continue;
            }
        }
	  //最后,只要map1【c】小于等于0,就说明m中的元素足够拼接
        for (char c : ransomNote) {
            if (map1[c]>0) {
                return false;
            }
        }
                return true;

    }
};