Skip to content

Latest commit

 

History

History
59 lines (45 loc) · 1.12 KB

242. 有效的字母异位词.md

File metadata and controls

59 lines (45 loc) · 1.12 KB

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

示例 1:

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

示例 2:

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

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

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

思路

先用map存储key-count,然后再遍历t看能否使得map为空

代码

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
  let obj = {}
  for(let i = 0; i < s.length; i ++) {
    let cur = s[i];
    obj[cur] = (obj[cur] || 0) + 1
  }
  for(let i = 0; i < t.length; i ++) {
    let cur = t[i];
    if (obj[cur] === undefined) return false;
    obj[cur] = obj[cur] - 1
    if (obj[cur] === 0) {
      delete obj[cur]
    }
  }
  return Object.keys(obj).length === 0
};

复杂度分析

时间复杂度 $O(N)$

空间复杂度 $O(N)$