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

查看1道真题和解析