给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。
本题中,将空字符串定义为有效的 回文串 。
很简单的一种方法
var isPalindrome = function(s) {
var len = s.length
var arr = []
for(var i=0;i<len;i++){
if(/[A-Za-z0-9]/.test(s[i])){
arr.push(s[i].toLowerCase())
}
}
return arr.join('') === arr.reverse().join('')
};
方法二 使用正则
var isPalindrome = function(s) {
let reg = /[a-zA-Z0-9]/g;
let str = s.match(reg);
if (str == null) return true;
str = str.join('');
str = str.toLowerCase();
let temp = str.split('').reverse().join('');
if (temp == str) {
return true;
} else return false;
};
方法三: 双指针
var isPalindrome = function (s) {
var arr = [];
for (var i = 0; i < s.length; i++) {
if (/[A-Za-z0-9]/.test(s[i])) {
arr.push(s[i].toLowerCase());
}
}
s = arr.join('')
var left = 0;
var right = s.length - 1;
while (left <= right) {
if (s[left] !== s[right]) {
return false;
}
left++;
right--;
}
return true
};