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