3.最长回文子串-中心扩散法

func longestPalindrome(s string) string {
    if len(s)==0{
        return ""
    }
    var left,right,maxLenght,maxStart int
    longestLen:=1

    for i:=0;i<len(s);i++{
        left,right=i-1,i+1

        for left>=0&&s[left]==s[i]{
            left--
            longestLen++
        }
        for right<len(s)&&s[right]==s[i]{
            right++
            longestLen++
        }
        for left>=0&&right<len(s)&&s[left]==s[right]{
            left--
            right++
            longestLen=longestLen+2

        }
        if longestLen>maxLenght{
            maxStart=left
            maxLenght=longestLen
        }
       
        longestLen=1
    }
    return  s[maxStart+1:maxStart+maxLenght+1]

}

Last updated