版权声明:长风原创 https://blog.csdn.net/u012846486/article/details/87394558
题解:
遍历字符串,以每个字符为回文串的中心,对于aabbaa这种形式,将bb合并,这样就可以统一处理
代码:
func longestPalindrome(s string) string {
len := len(s)
if len <= 1 { return s }
var maxLen, maxLeft, maxRight int
for i := 0; i < len; {
// 合并重复的字符
j := i + 1
for j < len && s[j] == s[j-1] { j++ }
// 回文扩展
k := i - 1
i = j
for k >= 0 && j < len && s[k] == s[j] { k--; j++ }
// 统计当前长度
curLen := j - k + 1
if curLen > maxLen {
maxLen = curLen
maxLeft = k + 1
maxRight = j
}
}
return s[maxLeft:maxRight]
}