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