第五日

写代码的蓝胖子發表於2024-06-09

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. 當迴文沒有中心的時候出現問題:只求解了奇數,卻忽略了偶數

【未完待續】