image-20241113203901770

思路

1.很笨的排序

直接把他排序了再来对比就ok了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    int cmd_char(const void* e1,const void* e2)
{
return (*(char*)e1-*(char*)e2);
}
bool isAnagram(char* s, char* t)
{
if(strlen(s)!=strlen(t))
{
return false;
}
qsort(s,strlen(s),sizeof(char),cmd_char);
qsort(t,strlen(t),sizeof(char),cmd_char);
return strcmp(s, t) ==0;
}

2.哈希表

只有26个字母,因此用数组就好了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool isAnagram(char* s, char* t) 
{
int nums[26]={};
int lens=strlen(s);
int lent=strlen(t);
if(lens!=lent){
return false;
}
for(int i=0;i<lens;i++){
nums[s[i]-'a']++;
}
for(int i=0;i<lent;i++){
nums[t[i]-'a']--;
}
for(int i=0;i<26;i++){
if(nums[i]!=0){
return false;
}
}
return true;
}

image-20241113205209812