242. 有效的字母异位词 - 力扣(LeetCode)
题目描述
给定两个字符串
s
和t
,编写一个函数来判断t
是否是s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
样例输入
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s
和t
仅包含小写字母
题解
t 是 s 的异位词等价于两个字符串中字符出现的种类和次数均相等。由于字符串只包含 26个小写字母,因此我们可以维护一个长度为 26的频次数组a ,先遍历记录字符串 s中字符出现的频次,然后遍历字符串 t,减去数组a中对应的频次,最后在检查遍历数组a,如果出现a[i]!=0,则说明 t 包含一个不在 s中的额外字符,返回 false即可。
代码
class Solution {
public:
bool isAnagram(string s, string t) {
int a[26]={0};
for(char str:s)
a[str-'a']++;
for(char str:t)
a[str-'a']--;
for(int i=0;i<26;i++)
{
if(a[i]!=0)
return false;
}
return true;
}
};