Js算法(验证回文串)

131 阅读1分钟

验证回文串

回文串:一个字符串,忽略大小写和非字母数字,正着读和反着读都是一样的

例如: A man, a plan, a canal: Panama

/**
 * 验证回文串
 * 回文串:一个字符串,忽略大小写和非字母数字,正着读和反着读都是一样的
 * 例如: A man, a plan, a canal: Panama
 */
var isPalindrome = function (s) {
    //判断是否有效字符
    const isValid = (c=>(c >='a' && c<='z') || (c>='0' && c<='9'))
    let i=0,j=s.length - 1;
    while(j>=i){
        //左字符和右字符循环比较
        const left = s[i].toLowerCase(),right=s[j].toLowerCase();
        if(!isValid(left)){
            i++;
        }
        else if(!isValid(right)){
            j--;
        }else if(left === right){
            i++;
            j--;
        }else{
            return false;
        }

    };
    return true;
}