Longest common subsequence of 3+ strings

前端 未结 5 765
深忆病人
深忆病人 2020-12-23 12:30

I am trying to find the longest common subsequence of 3 or more strings. The Wikipedia article has a great description of how to do this for 2 strings, but I\'m a little uns

5条回答
  •  既然无缘
    2020-12-23 13:06

    Here is a link to the solution view explanation here output is Length of LCS is 2

     # Python program to find 
     # LCS of three strings 
    
     # Returns length of LCS 
     # for X[0..m-1], Y[0..n-1] 
     # and Z[0..o-1] 
    def lcsOf3(X, Y, Z, m, n, o): 
    
        L = [[[0 for i in range(o+1)] for j in range(n+1)] 
            for k in range(m+1)] 
    
        ''' Following steps build L[m+1][n+1][o+1] in 
        bottom up fashion. Note that L[i][j][k] 
        contains length of LCS of X[0..i-1] and 
        Y[0..j-1] and Z[0.....k-1] '''
       for i in range(m+1): 
        for j in range(n+1): 
            for k in range(o+1): 
                if (i == 0 or j == 0 or k == 0): 
                    L[i][j][k] = 0
    
                elif (X[i-1] == Y[j-1] and
                      X[i-1] == Z[k-1]): 
                    L[i][j][k] = L[i-1][j-1][k-1] + 1
    
                else: 
                    L[i][j][k] = max(max(L[i-1][j][k], 
                    L[i][j-1][k]), 
                                    L[i][j][k-1]) 
    
          # L[m][n][o] contains length of LCS for 
          # X[0..n-1] and Y[0..m-1] and Z[0..o-1] 
        return L[m][n][o] 
    
      # Driver program to test above function 
    
    X = 'AGGT12'
    Y = '12TXAYB'
    Z = '12XBA'
    
    m = len(X) 
    n = len(Y) 
    o = len(Z) 
    
    print('Length of LCS is', lcsOf3(X, Y, Z, m, n, o)) 
    
    # This code is contributed by Soumen Ghosh.      
    

提交回复
热议问题