给你一个字符串 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] }
结束!