跳到主要内容

5-最长回文子串

中心扩散法

/*
* @lc app=leetcode.cn id=5 lang=golang
*
* [5] 最长回文子串
*/

// @lc code=start
func longestPalindrome(s string) string {
// 这里使用中心扩散法,它需要考虑奇数和偶数的情况

result := ""
centerSpread := func(left, right int) string {
for left >= 0 && right < len(s) && s[left] == s[right] {
left--
right++
}

return s[left+1 : right]
}

for i := 0; i < len(s); i++ {
oddStr := centerSpread(i, i) // aba
eventStr := centerSpread(i, i+1) // abba

result = Max(result, Max(oddStr, eventStr))
}

return result
}

func Max(x, y string) string {
if len(x) > len(y) {
return x
}
return y
}

// @lc code=end