验证回文串
Tips
相关题目:
题目
给定一个字符串, 验证它是否是回文串, 只考虑字母和数字字符, 可以忽略字母的大小写. 说明: 本题中, 我们将空字符串定义为有效的回文串.
示例
输入: "A man, a plan, a canal: Panama"
输出: true
题解
这题不难, 定义前后两个指针往中间游走, 如果遇见非字母, 非数字字符, 或者空格, 那就跳过它们; 否则将对应的字符进行比较: 一旦不同, 说明不是回文; 一次遍历之后如果都相同, 说明是回文.
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function (s) {
const regex = /[A-Za-z0-9]/
let left = 0
let right = s.length - 1
while (left < right) {
if (!regex.test(s[left])) left++
if (!regex.test(s[right])) right--
if (regex.test(s[left]) && regex.test(s[right])) {
if (s[left].toLowerCase() !== s[right].toLowerCase()) return false
left++
right--
}
}
return true
}