Leetcode 242 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true
示例 2:

输入: s = "rat", t = "car"
输出: false
说明:
你可以假设字符串只包含小写字母。

进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

1. 直接把字符串转换为数组,排序后拼接成字符串判断是否相等

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
  // 必须要 join 以后才可能比较,因为数组是引用, === 一定返回 false
  return s.split('').sort().join('') === t.split('').sort().join('');
};

2. 使用哈希表

var isAnagram = function(s, t) {
  if(s === t) {
     return true;
  }
  if(s.length !== t.length) {
    return false;
  }
  let obj = {};
  for(let i = 0; i < s.length; i++ ) {
    if(!obj[s[i]]) {
      obj[s[i]] = 0;
    }
    obj[s[i]] += 1;
    if(!obj[t[i]]) {
      obj[t[i]] = 0;
    }
    obj[t[i]] -= 1;
  }
  for(let x in obj) {
    if(obj[x] !== 0) {
      return false;
    }
  }
  return true;
}
原文地址:https://www.cnblogs.com/ssaylo/p/13428396.html