【leetcode】125.验证回文串js

题目

代码

字符过滤+正则表达式+双指针。

正则表达式这里意思是:

  • [ ]:表示"匹配方括号里的任意一个字符"。

  • 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)