给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
思路:哈希表的映射。
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool isAnagram(char* s, char* t)
{
int len_s = strlen(s);
int len_t = strlen(t);
if(len_s != len_t)//长度不相等直接返回false
{
return false;
}
int nums[26] = {0};//26个字母
for(int i = 0; i < 26;i++)
{
nums[s[i] - 'a']++;//nums数组在s[i] - 'a'位的值+1
nums[t[i] - 'a']--;//nums数组在t[i] - 'a'位的值-1
}
for(int i = 0;i < 26;i++)
{
if(nums[i] != 0)//如果有不为0的,则返回错误
{
return false;
}
}
return true;
}
int main()
{
char s[] = "aaac";
char t[] = "bbaa";
isAnagram(s, t);
printf("%d\n",isAnagram(s, t));
return 0;
}