字符串
双指针
回文串:删除空格和逗号之后再进行判断。
算法思路:
const isPalindrome = function (s) {if(s === '') return true;s = s.toString().replace(/[^\dA-Za-z]*/g, '').toLowerCase();return s === s.toString().split('').reverse().join('')}
替换字符串中的非字母和数字:
const res1 = str.replace(/\W_/g, '')const res2 = str.replace(/[^\dA-Za-z]/g, '')
双指针,原地检测:
const isPalindrome = function (s) {s = s.toLowerCase()let start = 0, end = s.length - 1;while(start <= end) {if (!s[start].match(/[a-z][0-9]/)) {start++} else if (!s[end].match(/[a-z][0-9]/)) {end--} else if (s[start] !== s[end]) {return false} else {start++;end--;}}return true;}