看到这道题之后先拆分,核心就是头尾指针来比对值是否相等,阻挡我们实现头尾指针移动的东西是标点符号和空格以及大小写问题,这里先使用toLowerCase()来将字符串全部转为小写,然后使用正则表达式进行匹配,最后使用replace()替换,经过处理的字符串使用头尾双指针来进行比对,一次遍历就可以得出结果。
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function (s) {
s = s.toLowerCase().replace(/[^a-zA-Z0-9]/g,"").replace(/\s/g,"").split("")
// return arr
// console.log(arr)
let slow = 0
let fast = s.length - 1
while (slow <= Math.floor((s.length) / 2) - 1) {
if (s[slow] === s[fast]) {
slow += 1
fast -= 1
} else {
return false
}
}
return true
};