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