5. 最长回文子串
题目描述:给你一个字符串 s,找到 s 中最长的回文子串
思路
- 从最长入手,用p[i][j]记录从i-j中的最长回文
- 从回文入手,抓住回文中的中间值,依次求解各个字符作为中间值时的情况,并比较找出最大
尝试
第一次尝试
class Solution:def longestPalindrome(self, s: str) -> str:char_num = len(**str**)if char_num == 0:return ""max_length = 1max_index = 0for index in range(char_num):pre,post = index,indexlength = 1while(1):pre -=1post += 1if pre>= 0 and post**<=**char_num:if s[pre] == s[post]:length+=1if max_length<length:max_length=lengthmax_index =indexelse:breakelse:breakprint(s[max_index-max_length:max_index+max_length])
-
通过报错解决:将str当成是s,超出数组范围
print(max_length,max_index)
-
结果错误:在输出前加入检测,发现能够正常获得2,1,确定是输出出现问题
-
调整输出
max_length -=1
return s[max_index-max_length:max_index+max_length+1]
- 当回文没有中心的时候出现问题:只求解了奇数,却忽略了偶数
【未完待续】