题解 | #密码截取#
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
就很简单,双指针 + 中心扩散
- 遍历数组
- 从中心点开始
- 这里又要分子串长度为偶数和奇数的情况
- 找到中心点往两边扩散,注意边界情况
- 循环结束,输出即可
let searchLen = (l, r, data) => { let res = 0, len = data.length while (l > -1 && r < len && data[l] === data[r]) { res = Math.max(res, r - l + 1) l-- r++ } return res } let main = () => { let input = readline() let data = input.split('') // 双指针 两边扩散 let res = 0 let len = data.length for (let i = 0; i < len; i++) { // 先假设回文长度为偶数 let l = i, r = i + 1 res = Math.max(searchLen(l, r, data), res) // 若回文长度为奇数 l = i - 1, r = i + 1 res = Math.max(searchLen(l, r, data), res) } console.log(res) } main()