思路:双指针
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function (s) {
const t = [];
for (let i = 0; i < s.length; i++) {
if (/[a-zA-Z0-9]/.test(s[i])) {
t.push(s[i].toLowerCase())
}
}
let j = t.length - 1;
let i = 0;
while (i < t.length && i < j) {
if (t[i] !== t[j]) {
console.log(t[i], t[j]);
return false;
}
i++;
j--;
}
return true;
};
const res = isPalindrome("1ab_a");
console.log(res);
首先将字符串中的所有字母,数字全部转入数组之中
const t = [];
for (let i = 0; i < s.length; i++) {
if (/[a-zA-Z0-9]/.test(s[i])) {
t.push(s[i].toLowerCase())
}
}
设置i,j分别指向数组的首尾,然后令I,j都向数组中间靠近,在这个过程中不断比较t[i]与t[j]
let j = t.length - 1;
let i = 0;
while (i < t.length && i < j) {
if (t[i] !== t[j]) {
console.log(t[i], t[j]);
return false;
}
i++;
j--;
}
return true;