题解 | #最长回文子串#

最长回文子串

https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param A string字符串 
 * @return int整型
 */
function getLongestPalindrome( A ) {
    // 首先判断A的长度, 若A长度小于等于0 返回0
    if(A.length <= 0){
        return 0
    }
    let max_length = 1; //非空字符串的回文子串长度至少为1
    for(let i = 0; i < A.length; i++){
        // 如果回文长度为奇数
        const k1 = ExpandPalindrome(A, i - 1, i + 1);
        // 如果回文长度为偶数
        const k2 = ExpandPalindrome(A, i, i + 1);
        const len1 = k1 * 2 + 1;
        const len2 = k2 * 2;
        max_length = Math.max(len1, len2,max_length)
    }
     return max_length;
}
function ExpandPalindrome(s,left, right){
    let k = 0;
    const n = s.length;
    while(left >= 0 && right < n){
        if(s[left] === s[right]){
            left--;
            right++;
            k++;
        }else{
            break;
        }
    }
    return k;
}
module.exports = {
    getLongestPalindrome : getLongestPalindrome
};

要点:

  1. 判断是否为回文
  2. 字符长度为奇偶判断方式略有不同
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务