【问题标题】:Unknown function behavior未知的函数行为
【发布时间】:2013-03-03 10:10:29
【问题描述】:

我试图了解这个函数的作用,但我一无所知。有什么想法吗?

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

【问题讨论】:

  • +1,很酷的回文函数。 :)

标签: javascript html logic


【解决方案1】:

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

【讨论】:

  • 谢谢!非常感谢:)
猜你喜欢
  • 2020-07-24
  • 2012-03-06
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
相关资源
最近更新 更多