题目
给定两个字符串 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 仅包含小写字母
代码展示
bool isAnagram(char * s, char * t){
int arr[26]={0};
int i=0;
int lens=strlen(s);
int lent=strlen(t);
for(i=0;i<lens;i++)
{
arr[s[i]-'a']++;
}
for(i=0;i<lent;i++)
{
arr[t[i]-'a']--;
}
for(i=0;i<26;i++)
{
if(arr[i]!=0)
{
return false;
}
}
return true;
}
过程解析
由于该题给出的是小写字母 a-z,所以设置一个整形数组arr ,初始化每个都为0 假设下标 0对应 a ,下标1 对应b, 下标 2对应c
在s字符数组中 使用 数组中的字符 - 'a' 即arr数组下标所对应的位置 并使值++ 假设如图所示
在t字符数组中 我们只需判断t 数组中的字符 - 'a' 即arr数组下标所对应的位置 并使值--
若此时arr数组中的值为0,则说明是有效的字母异位词,反之,就不是