题目
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
solution_1
思路:中心扩散法。遍历每一个元素,以这个元素为中心,利用“回文串”中心对称的特点,往两边扩散,看最多能扩散多远。要注意回文串的长度可能是奇数,也可能是偶数,两种情况都要考虑。
结果:执行用时:936 ms
排名:战胜77.46%
代码如下
class Solution:
def longestPalindrome(self, s: str) -> str:
if len(s) == 0: # 空字符
return ''
if len(s) == 1: # 字符串长度为1
return s
i = 1
j = 0
k = 0
cur_len = 0 # 记录当前回文字符串的长度
max_len = 1 # 记录最大回文字符串的长度
max_str = s