[LeetCode]5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
中心扩散法
枚举一个中心,一个点或两个相邻的点,向两侧扩展
func longestPalindrome(s string) string {
l, r := 0, 0
for i := 0;i < len(s);i++ {
l1, r1 := expand(i, i, s)
l2, r2 := expand(i, i + 1, s)
if r1 - l1 > r - l {
l = l1
r = r1
}
if r2 - l2 > r - l {
l = l2
r = r2
}
}
return s[l : r + 1]
}
func expand(l, r int, s string) (int, int) {
for l >= 0 && r < len(s) && s[l] == s[r] {
l --
r ++
}
return l+1, r-1
}
岂能尽如人意,但求无愧我心