Print Longest Common Subsequence(LCS)

Problem Link: https://www.hackerrank.com/challenges/dynamic-programming-classics-the-longest-common-subsequence/problem?isFullScreen=true

def longestCommonSubsequence(a, b):
    # Write your code here
    m=len(a)
    n=len(b) 
    dp=[[0 for i in range(n+1)] for j in range(m+1)]
    for i in range(m+1):
        for j in range(n+1):
            if(i==0 or j==0):
                dp[i][j]=0
            else:
                if(a[i-1]==b[j-1]):
                    dp[i][j]=1+dp[i-1][j-1]
                else:
                    dp[i][j]=max(dp[i-1][j],dp[i][j-1])
    i=m
    j=n
    s=""
    while(i!=0 and j!=0):
        if(a[i-1]==b[j-1]):
            s=str(a[i-1])+s
            i-=1
            j-=1
        else:
            if(dp[i-1][j]>=dp[i][j-1]):
                i-=1
            else:
                j-=1
    return s 

Last updated