中心扩展法
func longestPalindrome(s string) string {
var index, maxLength int
//中心扩展法
for i := 0; i < len(s); i++ {
len1 := expand(s, i, i)
len2 := expand(s, i, i+1)
//求两个整数最大值
val := maxInt(len1, len2)
if val > maxLength {
//已知中点或中点左1和长度,求起始位置i-(val-1)/2
index, maxLength = i-(val-1)/2, val
}
}
return s[index : index+maxLength]
}
func expand(s string, left, right int) int {
//注意是left>=0
for left >= 0 && right < len(s) && s[left] == s[right] {
left--
right++
}
return right - left - 1
}
func maxInt(x, y int) int {
if x > y {
return x
}
return y
}