给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
func longestPalindrome(s string) string {
n:=len(s)
if s=="" {
return ""
}
if n==1 {
return s
}
start:=0
maxLen:=0
for i:=0;i<n ; {
if n-i<=maxLen/2 {
break
}
left:=i
right:=i
for right<n-1&&s[right]==s[right+1] {
right++
}
i=right+1
for right<n-1&&left>0&&s[left-1]==s[right+1] {
left--
right++
}
newlen:=right-left+1
if newlen>maxLen {
start=left
maxLen=newlen
}
}
return s[start:start+maxLen]
}