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]
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 |