bool isAnagram(char* s, char* t) {
int size1=strlen(s);
int size2=strlen(t);
if(size1!=size2)
{
return false;
}
for(int x=0;x<size1;x++)
{
int count1=0;
int count2=0;
for(int y=0;y<size1;y++)
{
if(s[x]==s[y])
{
count1++;
}
}
for(int z=0;z<size2;z++)
{
if(t[z]==s[x])
{
count2++;
}
}
if(count2!=count1)
{
return false;
}
}
return true;
}
笔者的代码,又超时了
bool isAnagram(char * s, char * t){
int sl=strlen(s);
int tl=strlen(t);
if(sl!=tl){
//长度不匹配直接return false.
return false;
}
int ans[26]={0};
//开辟新空间存储数组
for(int i=0;i<sl;i++){
ans[s[i]-'a']++;
ans[t[i]-'a']--;
}
//一个加加,一个减减
for(int i=0;i<26;i++){
if(ans[i]!=0){
//不匹配就直接return false
return false;
}
}
return true;
}
大佬代码的思路:创建映射,一个++一个--,只要不是0就报错,比我的n的3次方他的n就快多了