给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
**说明:**本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true
示例 2:
输入: "race a car" 输出: false
解 1:
var isPalindrome = function(s) {
//将s中数字,非大小写字符替换掉,统一小写
s=s.replace(/[^0-9a-zA-Z]/g,'').toLocaleLowerCase()
//先字符串转换数组,反转,再转回字符串
let reverse=s.split('').reverse().join('')
return s===reverse
};
解 2 :
var isPalindrome = function(s) {
s=s.replace(/[^0-9a-zA-Z]/g,'').toLocaleLowerCase()
//双指针,判断回文,循环一半即可,如为奇数(5/7),可忽略中间那个数,不影响。全等于才返回 true
for(let i=0;i<s.length/2;i++){
if(s[i]!=s[s.length-1-i]){
return false
}
}
return true
};