leetcode-242有效的字母异位词

91 阅读1分钟

题目

image.png

解题思路

  1. 如果两个数组长度不一样直接返回false
  2. 创建一个map,用来存储每个字符出现的次数,存为key值
  3. s字符串出现一次value就+1
  4. t字符串出现一次value就-1
  5. 遍历完成后检查每个字符串的value是否为0,如果有非0的key就说明存在字符出现的次数不一样返回false

JavaScript代码

var isAnagram = function(s, t) {
  if (s.length !== t.length) {
    return false;
  }

  const map = new Map();
  for (let i = 0; i < s.length; i++) {
    if (map.has(s[i])) {
      map.set(s[i], map.get(s[i]) + 1);
    } else {
      map.set(s[i], 1);
    }

    if (map.has(t[i])) {
      map.set(t[i], map.get(t[i]) - 1);
    } else {
      map.set(t[i], -1);
    }
  }

  for (const letter of map) {
    // map不能通过forEach遍历
    if (letter[1] !== 0) {
      return false;
    }
  }
  return true;
}