https://leetcode-cn.com/problems/valid-anagram/
点击查看【bilibili】

题目

给定两个字符串 st ,编写一个函数来判断 t 是否是 s 的字母异位词。
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

示例

  1. 输入: s = "anagram", t = "nagaram"
  2. 输出: true
  1. 输入: s = "rat", t = "car"
  2. 输出: false

解答

字母异位词是指由相同的字母按照不同的顺序组成的单词
两个单词中字母出现的个数相同,就可以保证是字母异位词
image.png
1.如果两个数组长度不一致,则返回false
2.创建一个map,用来存储每个字符出现的次数。
3.对于第一个单词的每个字母,也就是s1[i],在map里将出现次数+1。
对于第二个单词的每个字母,也就是s2[i],在map里将出现次数-1.
4.遍历完成后,检查map里的每一个字母的出现次数是不是0.
如果有一个非0的字母,则返回false。否则返回true

答案

  1. var isAnagram = function(s, t) {
  2. if(s.length !== t.length) return false
  3. const map = new Map()
  4. for(let i=0;i<s.length;i++) {
  5. if(map.has(s[i])) {
  6. map.set(s[i], map.get(s[i]) + 1)
  7. }else {
  8. map.set(s[i], 1)
  9. }
  10. ``
  11. if(map.has(t[i])) {
  12. map.set(t[i],map.get(t[i]) - 1)
  13. }else {
  14. map.set(t[i], -1)
  15. }
  16. }
  17. for(const letter of map) {
  18. if(letter[1] !== 0) {
  19. return false
  20. }
  21. }
  22. return true
  23. };