516. Longest Palindromic Subsequence
Given a string s, find the longest palindromic subsequence's length in s.
A subsequence is a sequence that can be derived from another sequence by deleting some or no elements without changing the order of the remaining elements.
def longestPalindromeSubseq(self, s: str) -> int:
N = len(s)
dp = [[0] * N for _ in range(N)]
for i in range(N):
dp[i][i] = 1
for L in range(2, N + 1):
for i in range(N - L + 1):
j = i + L - 1
if s[i] == s[j]:
dp[i][j] = dp[i + 1][j - 1] +2
else:
dp[i][j] = max(dp[i + 1][j], dp[i][j - 1])
return dp[0][-1]