给定两个字符串 *s**t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。

    注意:*s**t* 中每个字符出现的次数都相同,则称 *s**t* 互为字母异位词。

    示例 1:

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

    示例 2:

    输入: s = "rat", t = "car"
    输出: false
    

    提示:

    • 1 <= s.length, t.length <= 5 * 104
    • st 仅包含小写字母

    进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

    class Solution {
    public:
        //直接sort,这里不是最佳解,但是后面会用到这个,可以用sort之后的结果作为key
        bool isAnagram(string s, string t) {
            if (s.length() != t.length()) {
                return false;
            }
            sort(s.begin(), s.end());
            sort(t.begin(), t.end());
            return s == t;
        }
    };
    
    class Solution {
    public:
        bool isAnagram(string s, string t) {
            int record[26] = {0};
            for (int i = 0; i < s.size(); i++) {
                // 并不需要记住字符a的ASCII,只要求出一个相对数值就可以了
                record[s[i] - 'a']++;
            }
            for (int i = 0; i < t.size(); i++) {
                record[t[i] - 'a']--;
            }
            for (int i = 0; i < 26; i++) {
                if (record[i] != 0) {
                    // record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。
                    return false;
                }
            }
            // record数组所有元素都为零0,说明字符串s和t是字母异位词
            return true;
        }
    };