005-Longest Palindromic Substring 最长回文子串

Description

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 回文是一个正读和反读都相同的字符串,例如,”aba” 是回文,而 “abc” 不是。

Example
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

输入: "cbbd"
输出: "bb"
Solution
func longestPalindrome(s string) string {
    if s == "" {
        return ""
    }
    start,end := 0,0
    for i := 0; i < len(s); i ++ {
        len1 := expandAroundCenter(s,i,i)
        len2 := expandAroundCenter(s,i, i +1)
        len := maxInt(len1,len2)
        if len > end-start{
            start = i - (len - 1)/2
            end = i + len/2
        }
    }
    return s[start:end+1]
}

func expandAroundCenter(s string,left,right int)int  {
    L,R := left,right
    for L >= 0 && R < len(s) && s[L] == s[R]{
        L--
        R++
    }
    return R-L-1
}

func maxInt(a,b int)int  {
    if a > b {
        return a
    }
    return b
}

leetCode地址
Longest Palindromic Substring