第五日

5. 最长回文子串

题目描述:给你一个字符串 s,找到 s 中最长的回文子串
思路

  1. 从最长入手,用p[i][j]记录从i-j中的最长回文
  2. 从回文入手,抓住回文中的中间值,依次求解各个字符作为中间值时的情况,并比较找出最大

尝试

第一次尝试
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])
  1. 通过报错解决:将str当成是s,超出数组范围
    print(max_length,max_index)

  2. 结果错误:在输出前加入检测,发现能够正常获得2,1,确定是输出出现问题

  3. 调整输出

max_length -=1
return s[max_index-max_length:max_index+max_length+1]
  1. 当回文没有中心的时候出现问题:只求解了奇数,却忽略了偶数

【未完待续】

posted @ 2024-06-09 23:56  写代码的蓝胖子  阅读(16)  评论(0)    收藏  举报