この関数が何をするのか理解しようとしていますが、私にはわかりません。何か案は?
var mystery = function (str) {
var x=true;
for(var i=0; i<str.length/2; i++){
if(str.charAt(i)!=str.charAt(str.length-i-1)){
x = false;
}
}
return x;
}
この関数が何をするのか理解しようとしていますが、私にはわかりません。何か案は?
var mystery = function (str) {
var x=true;
for(var i=0; i<str.length/2; i++){
if(str.charAt(i)!=str.charAt(str.length-i-1)){
x = false;
}
}
return x;
}
文字列が対称であるかどうか、つまり、インデックスのすべての文字が、のようi
に文字列の終わり(at length-i-1
)から同じ距離にある文字と等しいかどうかをテストするだけ"radar"
です。
このように単純化して高速化することができます:
var mystery = function (str) {
for (var i=0; i<str.length/2; i++){
if (str.charAt(i) !== str.charAt(str.length-i-1)){
return false;
}
}
return true;
}
そして、少し速くなりますが、あまり明確ではありません:
var mystery = function (str) {
for (var i=~~(str.length/2); i--;){
if (str.charAt(i) !== str.charAt(str.length-i-1)){
return false;
}
}
return true;
}
楽しみのために、jspefはそれを確認します:http://jsperf.com/palyndromes