1092. Shortest Common Supersequence - LeetCode Solution


Dynamic Programming

Python Code:

class Solution:
    def shortestCommonSupersequence(self, a: str, b: str) -> str:
        t = []


        for i in  range(len(a)+1):
            l = []
            for j in range(len(b)+1):
                l.append(0)
            t.append(l)


        for i in range(1, len(a)+1, 1):
            for j in range(1,len(b)+1, 1):
                if a[i - 1] == b[j - 1]:
                    t[i][j] = 1 + t[i-1][j-1]



                else:
                    t[i][j]  = max(t[i-1][j], t[i][j-1])


        i = len(a)
        j = len(b)

        string = ""

        while i>0 and j > 0:
            if a[i-1] == b[j-1]:
                string+= a[i-1]
                i-=1
                j-=1
            else:
                if t[i][j-1] > t[i-1][j]:
                    string+= b[j-1]

                    j-=1
                else:
                    string+= a[i-1]
                    i-=1


        while i>0:
            string += a[i-1]
            i-=1

        while j>0:
            string += b[j-1]
            j-=1



        return string[::-1]


Comments

Submit
0 Comments
More Questions

688B - Lovely Palindromes
66B - Petya and Countryside
1557B - Moamen and k-subarrays
540A - Combination Lock
1553C - Penalty
1474E - What Is It
1335B - Construct the String
1004B - Sonya and Exhibition
1397A - Juggling Letters
985C - Liebig's Barrels
115A - Party
746B - Decoding
1424G - Years
1663A - Who Tested
1073B - Vasya and Books
195B - After Training
455A - Boredom
1099A - Snowball
1651D - Nearest Excluded Points
599A - Patrick and Shopping
237A - Free Cash
1615B - And It's Non-Zero
1619E - MEX and Increments
34B - Sale
1436A - Reorder
1363C - Game On Leaves
1373C - Pluses and Minuses
1173B - Nauuo and Chess
318B - Strings of Power
1625A - Ancient Civilization