int cmp(const void*a,const void*b)
{
char a1=*(char*)a,b1=*(char*)b;
return a1-b1;
}
bool isAnagram(char * s, char * t){
//因为是异位词,所以排好序应该是一致的
//如果长度不一,说明这两个字符串不是异位词
int lens=strlen(s),lent=strlen(t);
if(lens!=lent)
{
return false;
}
qsort(s,lens,sizeof(char),cmp);
qsort(t,lent,sizeof(char),cmp);
//排好序,比较即可
return strcmp(s,t)==0;
}
bool isAnagram(char * s, char * t){
//这里用哈希表来写,大概就是把s里的字母映射到哈希表中,在字母对应的表中加一
//如果我们要判断是否为字母异位词,只需要将t相同的位置在哈希表中减一
int record[26]={0};//二十六字母
//将t的字符先映射进哈希表
for(int i=0;i<strlen(s);++i)
{
record[s[i]-'a']++;
}
//将相同的自减
for(int i=0;i<strlen(t);++i)
{
record[t[i]-'a']--;
}
//结束这一步后,如果还有不为0的数,一定是多了或少了,返回false
for(int i=0;i<26;++i)
{
if(record[i]!=0)
{
return false;
}
}
return true;
}