题解 | #最长回文子串#

最长回文子串

http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af

package main

func getLongestPalindrome( A string ,  n int ) int {
    start, end := 0, 0
    
    for i := range A {
        l, r := expand(A, i, i)     // 奇数的情况 
        if end - start < r - l {    // 如果有更大的边界值
            start, end = l, r
        }

        l, r = expand(A, i, i+1)    // 偶数的情况
        if end - start < r - l {    // 如果有更大的边界值
            start, end = l, r
        }
    }
    return end - start +1
}

// 围绕中心展开
func expand(A string, left, right int) (int, int) {
    // 这个是核心,给一个字符串+字符串左右边界,找出该范围内最长的回文字符串的左右边界
    for ; left >= 0 && right < len(A) && A[left] == A[right]; left, right = left - 1, right + 1 {
    }
    return left + 1, right - 1; // 上面的循环最后那块把多操作的加减回去
}

全部评论

相关推荐

永远年轻_永远热泪盈眶:有一个漏了,没打码
点赞 评论 收藏
分享
人生一梦:24年我投暑期实习,它以我不是女的为理由拒绝了我查看图片
点赞 评论 收藏
分享
好兄弟们,不愁找不到工作了,东哥还有10万骑手HC待发&nbsp;还有五险一金,话不多说我要去投递了
婉拒腾讯保洁岗:都让让,鄙人骑电动车贼溜,ssp骑手offer应该有我一份吧?在坐的谁赞同,谁反对?查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务