javascript判断字符串是否是回文的算法实现

在浏览网页时,发现如标题一样的算法题, 大家一起来看一下:

首先,我先来解释一下什么是回文:回文(指顺读和倒读都一样的词语)。 就像“中国人人国中”就是一个回文句。这道题的要求有以下两点:

  1. 不能使用类似reverse()之类的函数;
  2. 封装。

刚一上来,笔者扒了扒百度,得到如下结果:

var len = str.length,
    e=(!!(len%2)),
    mid = e?Math.floor(len/2):(len/2),
    prev = str.substring(0,mid),
    next = e?str.substring(mid+1):str.substring(mid),
    reg = new RegExp("["+prev+"]","g");
    alert(next.split("").reverse().join("")===prev);

瞬间觉得完美,然而,看条件有要求不能有reverse(), 笔者只好改成:

var str = "abcwwcba";
//console.log( isPalindrome(str) )

function isPalindrome(str){
    var len = str.length,
        e=(!!(len%2)),
        mid = e?Math.floor(len/2):(len/2),
        prev = str.substring(0,mid),
        next = e?str.substring(mid+1):str.substring(mid),
        reg = new RegExp("["+prev+"]","g");
    var nextArr = next.split(""),
        newNextArr = [];
    for (var i=nextArr.length-1; i>=0; i--){
        newNextArr.push(nextArr[i])
    }
    return newNextArr.join("")===prev;
}

希望对大家有帮助,感谢。