实在是一道简单题,但是刚开始两种方法都使用了两重循环,所以超时,后来使用了数组中的sort()函数,代码如下:
var isAnagram = function(s, t) {
aS=s.split('');
aT=t.split('');
if(aS.length!=aT.length)
return false;
aS=aS.sort();
aT=aT.sort();
i=0;
for(;i<aS.length;i++){
if(aS[i]!=aT[i])
return false;
}
if(i==aS.length)
return true;
else
return false;
};
之前两种超时解法如下:
(一)
var isAnagram = function(s, t) {
aS=s.split('');
aT=t.split('');
if(aS.length!=aT.length)
return false;
for(i=0;i<aS.length;i++){
var count=1; //标记每个字母出现次数
for(j=i+1;j<aS.length;j++){
if(aS[i]==aS[j] && aS[i]!=''){
count++;
aS[j]='';
alert(" aS[i] "+aS[i]+" j "+j);
}
}
alert(aS);
alert(" aS[i] "+aS[i]+" i "+i+" count "+count);
for(j=0;j<aT.length;j++){
if(aS[i]==aT[j] && aS[i]!='')
{count--;alert(aT[j]+" j "+j+" count "+count);}
}
if(count!==0 && aS[i]!='')
return false;
else if(count!==1 && aS[i]=='')
return false;
}
return true;
};
(二)
var isAnagram = function(s, t) {
aS=s.split('');
aT=t.split('');
if(aS.length!=aT.length)
return false;
count=0; //标记最后aT中‘’的个数
for(i=0;i<aS.length;i++){
alert("aS[i] "+aS[i]);
for(j=0;j<aS.length;j++){
alert("aT[j] "+aT[j]);
if(aS[i]==aT[j]){
aT[j]='';
count++;
}
}
}
if(count!=aT.length)
return false;
else
return true;
};