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

示例 1:

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

示例 2:

输入: s = "rat", t = "car"
输出: false

说明:
你可以假设字符串只包含小写字母。

 

思路:

解法一:

对于s字符串中的每个字符char,若t中有char,则在t中删除char。最后若t为空,说明刚刚好。

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
  if (s.length !== t.length) return false;
  for (let char of s) {
    if (t.indexOf(char) !== -1) {
      let index = t.indexOf(char);
      t = t.slice(0, index) + t.slice(index + 1);
    }
  }
  if (t) return false;
  return true;
};

解法二:

将两个字符串转换成数组,然后排序,最后在转换成字符串,比较这两个字符串是否相等即可。

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
  if (s.length !== t.length) return false;
  let array_s = Array.from(s).sort().join(''),
      array_t = Array.from(t).sort().join('');
  return array_s === array_t;
};