【简单】算法nodeJs:最长回文子串

63 阅读1分钟

描述

对于给定的由小写字母构成的字符串 s,求出其最长回文子串的长度。

子串为从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。
一个字符串被称作回文串,当且仅当这个字符串从左往右读和从右往左读是相同的。

输入描述:

在一行上输入一个长度为 1≦len(s)≦350、仅由小写字母构成的字符串 s。

输出描述:

输出一个整数,表示字符串 s 的最长回文子串的长度。

image.png

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    line = await readline();
    let num = 1;
    if (line.length < 2) return console.log(line.length);
    for (let i = 0; i < line.length; i++) {
        for (let j = 3; j <= line.length - i; j++) {
            if (
                line.slice(i, j) ===
                line.slice(i, j).split("").reverse().join("")
            ) {
                num =
                    line.slice(i, j).length > num
                        ? line.slice(i, j).length
                        : num;
            }
        }
    }
    console.log(num);
})();