我写一个字符串比较函数,其中结果如下任务:
串字符迭代Efficency在JavaScript
"ABC" & "abc" returns 0;
"abc" & "abcd" return -1;
"abcd" & "abc" returns 1;
我的解决办法是:
function strcmp(a,b){
var aTemp = a.toLowerCase();
var bTemp = b.toLowerCase();
if(aTemp === bTemp){
return 0;
} else {
for(var i = 0; i < aTemp.length;i++){
var charAtA = aTemp.charCodeAt(i), charAtB = bTemp.charCodeAt(i);
if(charAtB !== charAtB) // NaN returns false when compared to itself.
return 1;
if(charAtA < charAtB)
return -1;
else if(charAtA > charAtB)
return 1;
}
if(bTemp.length > aTemp.length)
return -1;
return 0;
}
}
当呈现我的解决方案(除了在代码中发现bug之外),我被问到为什么我将字符串转换为小写字母并将它们存储在参数中,而不是for循环的每次迭代中,将字符转换为小写。 所以我的问题是,将字符串转换为小写字母,更有效率,还是我提交答案只是与我一起玩智力游戏的人的正确方法是什么?
'“abc”&“abd”'的输出是什么? – Kroltan
似乎过于复杂? - > ** https://jsfiddle.net/adeneo/1w7kudsj/** – adeneo
@adeneo你的小提琴为'strcmp(“fooABC”,“oabc”)返回1# – Barmar