题目描述:

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

解析:
1.如果两个数组长度不一致,则返回false
2.创建一个map,用来存储每个字符出现的次数
3.对于第一个单词的每个字母,也就是s[i],在map里将出现次数+1,对于第二个单词的每个字母,也就是t[i],在map里将出现次数-1
4.遍历完成后,检查map里的每一个字母的出现次数是不是0,如果有一个非0的字母,则返回false,否则返回true

Java:

public boolean isAnagram(String s, String t) {
        if(s.length() != t.length()) {
            return false;
        }
        HashMap<Character, Integer> map = new HashMap<Character, Integer>();
        for(int i = 0; i < s.length(); i++) {
            char sChar = s.charAt(i);
            if(map.containsKey(sChar)) {
                map.put(sChar, map.get(sChar) + 1);
            } else {
                map.put(sChar, 1);
            }
            char tChar = t.charAt(i);
            if(map.containsKey(tChar)) {
                map.put(tChar, map.get(tChar) - 1);
            } else {
                map.put(tChar, -1);
            }
        }
        for(int count : map.values()) {
            if(count != 0) {
                return false;
            }
        }
        return true;
    }

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) {
        if(letter[1] !== 0) {
            return false;
        }
    }
    return true;
};