第五日
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 = 1
max_index = 0
for index in range(char_num):
pre,post = index,index
length = 1
while(1):
pre -=1
post += 1
if pre>= 0 and post**<=**char_num:
if s[pre] == s[post]:
length+=1
if max_length<length:
max_length=length
max_index =index
else:
break
else:
break
print(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]
- 当回文没有中心的时候出现问题:只求解了奇数,却忽略了偶数

【未完待续】

浙公网安备 33010602011771号