242. Valid Anagram

Given two strings s and t , write a function to determine if t is an anagram of s.

Example 1:

Input: s = "anagram", t = "nagaram"
Output: true

Example 2:

Input: s = "rat", t = "car"
Output: false

Note: You may assume the string contains only lowercase alphabets.

Follow up: What if the inputs contain unicode characters? How would you adapt your solution to such case?

题解

思路:

  • 创建数据结构为 Map 的 map 对象;
    • 遍历 s, 将各字母出现的次数叠加存储进 map 中;
    • 遍历 t, 在 map 中减少相应字母出现的个数, 并增加 map 中未收录的字母;
  • 如果最后 map 的 size 不为 0, 则 s 与 t 不是字母异位词; 否则是字母异位词;
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isAnagram = function(s, t) {
const map = new Map()
for (let i = 0; i < s.length; i++) {
const getMap = map.get(s[i])
if (!getMap) {
map.set(s[i], 1)
} else {
map.set(s[i], getMap + 1)
}
}
for (let i = 0; i < t.length; i++) {
const getMap = map.get(t[i])
if (getMap === 1) {
map.delete(t[i])
} else if (getMap) {
map.set(t[i], getMap - 1)
} else {
map.set(t[i], 1)
}
}
if (map.size) {
return false
} else {
return true
}
};

相关题目

202、205、290、349、350、451