516. Longest Palindromic Subsequence

Given a string s, find the longest palindromic subsequence's length in s.

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):
       
    L = len(s)
   
    if len(s) == 1:
        return 1
   
       
    M = [[0]*L for _ in range(L)]
   
    for i in range(L):    
        M[i][i] = 1

   
    for cur in range(L):
        for start in range(cur-1, -1, -1):
            if s[cur] == s[start]:                  
                M[start][cur] = M[start+1][cur-1]+2
            else:
                M[start][cur] = max(M[start+1][cur], M[start][cur-1]) # Tricky Line!!
                   
    return M[0][L-1]

Comments

Popular posts from this blog

849. Maximize Distance to Closest Person

347. Top K Frequent Elements

139. Word Break