题解 | #密码截取#
密码截取
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()