思路:
本质是要查看一个元素是否在一个集合里,直接使用哈希数组,创建一个26长度的整形数组,初始值均设为0,数组下标从0-25,表示字母a-z,先遍历s字符串,记录s中已有的字母,出现一个则对应下标数组元素值++,在遍历t字符串,对应下标数组元素–,等于做一个逆运算,最后遍历哈希数组,如果和初始状态一致(值均为0),说明s,t的字母均相同,如果不一致则一定不全相同
bool isAnagram(char* s, char* t)
{
//1.创建一个长度为26的空数组
int hash[26];
//2.读取字符串s并记录到hash中
int i=0,j=0;
while(s[i])
{
//
int k=0;
k=s[i]-'a';
hash[k]+=1;//在该字母对应下标值+1,比如,字母‘a’对应hash[0],hash[0]++;
i++;
}
while(t[j])
{
//
int k=0;
k=t[j]-'a';
hash[k]-=1;
j++;
}
for(int k=0;k<26;k++)
{
if(hash[k]!=0) return false;
}
return true;
}