思路:双指针
/*** @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;
