给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组成
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
对称的字符串是回文子串,比如:aa,aba,abba
中心扩展算法
func center(s string, left, right int) (int, int) {
for left >= 0 && right < len(s) && s[left] == s[right] {
left -= 1
right += 1
}
return left + 1, right - 1
}
func longestPalindrome(s string) string {
if len(s) <= 1 {
return s
}
start := 0
end := 0
for i := 0; i < len(s); i++ {
left1, right1 := center(s, i, i)
left2, right2 := center(s, i, i+1)
if right1-left1 > end-start {
start = left1
end = right1
}
if right2-left2 > end-start {
start = left2
end = right2
}
}
return s[start : end+1]
}
结束!