题解 | #最长回文子串#

最长回文子串

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

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
    let arr = [];
    while ((line = await readline())) {
        arr = line.split("");
    }
    // 从长--短进行子串判断是否为回文子串
    // 定义一个最大长度,后续递减进行查询
    let len = arr.length;
    // 定义一个回文子串的长度,用来存储更新
    let num = 0;
    for (let k = len; k >= 1; k--) {
        for (let i = 0; i <= arr.length - k; i++) {
            // 切出长度为k的子串
            let slice = arr.slice(i, i + k);
            // 定义一个新的newslice=slice.concat().reverse()
            let newslice = slice.concat().reverse();
            // 判断是否是回文,如果是,并且slice的长度大于num,则更新num,并结束循环(此时已是最大的了,没必要再接着循环查询了)
            //判断数组各元素是否相等,不能直接用‘==或者===’,可用toString()或join()
            if (slice.toString() == newslice.toString() && slice.length > num) {
                num = slice.length;
                break;
            }
        }
        // 如果num不等于0,说明已找到一个回文子串,结束循环
        if (num != 0) {
            break;
        }
    }
    console.log(num);
})();

全部评论

相关推荐

Java抽象带篮子:简历怎么写可以看看我发的帖子,你的第一个是实习经历吗?那怎么写的是你的第一个练手项目呢?简历写的怎么样直接投小厂面试一下就知道了
没有实习经历,还有机会进...
点赞 评论 收藏
分享
每晚夜里独自颤抖:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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