2

我试图了解此功能的作用,但我一无所知。有任何想法吗?

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;
}
4

1 回答 1

5

它只是测试字符串是否对称,即索引处的每个字符都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

于 2013-03-14T20:46:38.013 回答