# 题目

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

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

说明: 你可以假设字符串只包含小写字母。

示例 1:

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

242. 有效的字母异位词 - 力扣(LeetCode)

# 分析

定义一个大小为 26 的数组 record 来记录每个字符出现的次数

先遍历一个字符串,出现的字符 ++,然后遍历另一个字符串,对应的字符 --,

最后遍历数组,有值不为零则不是字母异位词。

c
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;
    }
};