题解 | #密码截取#

密码截取

https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1

就很简单,双指针 + 中心扩散

  1. 遍历数组
  2. 从中心点开始
  • 这里又要分子串长度为偶数和奇数的情况
  1. 找到中心点往两边扩散,注意边界情况
  2. 循环结束,输出即可
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()
全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务