1. 程式人生 > 其它 >【程式碼題python】【leetcode】:最長迴文串

【程式碼題python】【leetcode】:最長迴文串

技術標籤:pythonleetcodepython

題目
給定一個字串 s,找到 s 中最長的迴文子串
迴文串示例:abcba
給定字串:sssabcba1da

(參考leetcode評論區)
程式碼

"""
dp方程
dp[i][j]代表s[i~j]是否為迴文串,是為1,不是為0
dp[i][i]=1
if s[i]==s[i+1] dp[i][i+1]=1
s[i]=s[i+len]&&dp[i+1][i+len-1]==1 => dp[i][i+len]=1
"""
def longestPalindrome
(s): n = len(s) dp = [[0] * n for i in range(n)] # 初始化dp max_len = 0 res = "" for i in range(n): for j in range(i, -1, -1): if s[i] == s[j] and (i - j < 2 or dp[i - 1][j + 1]): # 滿足這個條件,i到j是迴文串 dp[i][j] = 1 if dp[i][j]
and i - j + 1 > max_len: # 更新max_len max_len = i - j + 1 res = s[j:i + 1] return res s1 = 'sssabcba1da' print(longestPalindrome(s1))

結果
在這裡插入圖片描述