https://leetcode-cn.com/problems/valid-anagram/
点击查看【bilibili】
题目
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
示例
输入: s = "anagram", t = "nagaram"
输出: true
输入: s = "rat", t = "car"
输出: false
解答
字母异位词是指由相同的字母按照不同的顺序组成的单词
两个单词中字母出现的个数相同,就可以保证是字母异位词
1.如果两个数组长度不一致,则返回false
2.创建一个map,用来存储每个字符出现的次数。
3.对于第一个单词的每个字母,也就是s1[i],在map里将出现次数+1。
对于第二个单词的每个字母,也就是s2[i],在map里将出现次数-1.
4.遍历完成后,检查map里的每一个字母的出现次数是不是0.
如果有一个非0的字母,则返回false。否则返回true
答案
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) {
if(letter[1] !== 0) {
return false
}
}
return true
};