题目

代码
字符过滤+正则表达式+双指针。
正则表达式这里意思是:
-
[ ]:表示"匹配方括号里的任意一个字符"。 -
a-z:表示小写字母 a 到 z。 -
A-Z:表示大写字母 A 到 Z。 -
0-9:表示数字 0 到 9。 -
^:当它写在方括号的最开头 时,表示"取反",也就是"不要匹配这些"。
javascript
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function(s) {
// 过滤掉非字母数字字符,转小写
s = s.replace(/[^a-zA-Z0-9]/g, '').toLowerCase()
let left = 0
let right = s.length - 1
while (left < right) {
if (s[left] !== s[right]) return false
left++
right--
}
return true
};
时间复杂度为O(n)