我寫一個字符串比較函數,其中結果如下任務:
串字符迭代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