Print Shortest Common Supersequence (Leetcode 1092)
Print SCS
Problem Link: https://leetcode.com/problems/shortest-common-supersequence/
class Solution:
def shortestCommonSupersequence(self, str1: str, str2: str) -> str:
m=len(str1)
n=len(str2)
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(str1[i-1]==str2[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
ans=''
while(i!=0 and j!=0):
if(str1[i-1]==str2[j-1]):
ans+=str1[i-1]
i-=1
j-=1
else:
if(dp[i-1][j]>dp[i][j-1]):
ans+=str1[i-1]
i-=1
else:
ans+=str2[j-1]
j-=1
while(i!=0):
ans+=str1[i-1]
i-=1
while(j!=0):
ans+=str2[j-1]
j-=1
return ans[::-1]
Last updated