/*
 * @lc app=leetcode.cn id=242 lang=javascript
 *
 * [242] 有效的字母异位词
 */

// @lc code=start
/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function (s, t) {
  const n1 = s.length;
  const n2 = t.length;
  if (n1 !== n2) return false;

  const hash = new Map()
  for (let i = 0; i < n1; i++) {
    const cur = s[i];
    hash.set(cur, (hash.get(cur) || 0) + 1)
  }

  for (let j = 0; j < n2; j++) {
    if (!hash.has(t[j])) return false;

    const key = t[j]
    const val = hash.get(key);
    if (val <= 1) {
      hash.delete(key)
    } else {
      hash.set(key, val - 1)
    }
  }

  return hash.size === 0
};
// @lc code=end

console.log(isAnagram('anagram', 'nagaram'));