在浏览网页时,发现如标题一样的算法题, 大家一起来看一下:
首先,我先来解释一下什么是回文:回文(指顺读和倒读都一样的词语)。 就像“中国人人国中”就是一个回文句。这道题的要求有以下两点:
- 不能使用类似reverse()之类的函数;
- 封装。
刚一上来,笔者扒了扒百度,得到如下结果:
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;
}
希望对大家有帮助,感谢。