516. Longest Palindromic Subsequence
遞迴
class Solution:
def longestPalindromeSubseq(self, s: str) -> int:
def helper(i, j):
# 長度為奇數的回文
if i == j:
return 1
# 長度為偶數的回文
elif j - i == 1 and s[i] == s[j]:
return 2
else:
# 頭尾一樣,接著繼續檢查中間的最長回文子序列。
if s[i] == s[j]:
return 2 + helper(i+1, j-1)
# 頭尾不同,分別看先移動頭部的指標,和先移動尾部的指標,
# 看哪邊可以拿到比較長的回文子序列。
else:
return max(helper(i+1, j), helper(i, j-1))
return helper(0, len(s)-1)自頂向下
Python 內建的記憶法
自己實作記憶法
自底向上
Last updated