题解 | #最长回文子串#
最长回文子串
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); })();