题目描述:
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2:
输入: “cbbd”
输出: “bb”
解题思路:
一、中心扩散法:
分别以每一个字母为中心向其两端判断字母是否相同,由于可能存在回文串长度为偶数的情况,所以需要先找到与当前词相邻的相同词。
class Solution:
def longestPalindrome(self, s: str) -> str:
res=''
ll=len(s)
for i in range(ll):
begin,end=i,i
while end!=ll-1 and s[end+1]==s[begin]:#所有与当前词相同的词作为中心词
end+=1
while begin!=0 and end!=ll-1 and s[begin-1]==s[end+1]:#比较前后字母是否相同
begin-=1
end+=1
if end-begin+1>len(res):
re