题解 | #最长回文子串#

最长回文子串

https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507

const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

rl.on("line", function (line) {
    const tokens = line.split("");
    let maxLen = 0;
    for (let i = 0; i < tokens.length - 2; i++) {
        const j = i + 1;
        const k = i + 2;
        if (tokens[i] === tokens[j]) {
            const len = getLength(tokens, i, 2);
            if (len > maxLen) {
                maxLen = len;
            }
        }
        if (tokens[i] === tokens[k]) {
            const len = getLength(tokens, i, 3);
            if (len > maxLen) {
                maxLen = len;
            }
        }
    }
    console.log(maxLen);
});

// 获取回文子串长度
const getLength = (tokens: string[], i: number, baseLen: number) => {
    let len = baseLen;
    const j = baseLen === 2 ? i + 1 : i + 2;
    for (let m = 1; i - m >= 0 && j + m < tokens.length; m++) {
        if (tokens[i - m] === tokens[j + m]) {
            len += 2;
        } else {
            return len;
        }
    }
    return len;
};

全部评论

相关推荐

04-17 10:16
门头沟学院 Java
不河狸啊:为什么我的是已送达,连已读都没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务