给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

**说明:**本题中,我们将空字符串定义为有效的回文串。

示例 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
};
Last Updated: 4/3/2020, 6:21:54 PM