Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- m,n=len(s1),len(s2)
- dp={}
- def lcs(i,j):
- if (i,j)in dp:return dp[i,j]
- if i==m or j==n:
- dp[i,j]=0
- else:
- if s1[i]==s2[j]:
- dp[i,j]=1+lcs(i+1,j+1)
- else:
- dp[i,j]=max(lcs(i+1,j),lcs(i,j+1))
- return dp[i,j]
- for i in range(m+1):
- for j in range(n+1):
- if (i,j) not in dp:
- lcs(i,j)
- i,j,item=0,0,[]
- while i<m and j<n:
- if s1[i]==s2[j]:
- item.append(s1[i])
- i,j=i+1,j+1
- elif dp[i+1,j]>dp[i,j+1]:
- i=i+1
- else:
- j=j+1
- print(item)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement