提供一个新思路,通过回文字符串的特性,正反读取都相同,可以将字符串逆转后,求取最长公共子串,但可能会出现其他部分重置与另一部分相同,所以需要对比找到最长公共子串的索引与原索引相加是否为字符串长度-1,即 i+j-tmp[j+1]+1== len(A)-1,如果相等,则更新最长回文子串.

更新: 此处应该判断的是 i - 最长公共子串长度 + 1 = 当前与i匹配的字符原索引 (L - 1 -j)

func getLongestPalindrome( A string ,  n int ) int {
    // write code here
    if len(A) == 1{
        return 1
    }
    B := resever(A)
    res := make([]int,len(A)+1)
    max := 0
    for i:=0;i<len(a);i++{ tmp :="make([]int,len(A)+1)" for j:="0;j<len(B);j++{" if b[j]="=" a[i]{ tmp[j+1]> max &amp;&amp; i+j-tmp[j+1]+1== len(A)-1{
                    max = tmp[j+1]
//                     fmt.Println(tmp)
                }
            }else{
                tmp[j+1] = 0
            }
        }
        res = tmp
    }
    return max
}

func resever(A string)string{
    tmp := []byte(A)
    for i,j:=0,len(A)-1;i</len(a);i++{>