python 最长公共子序列长度_该程序在Python中查找三个字符串的最长公共子序列的长度...

假设我们有三个字符串s1,s2和s3,我们必须找到它们最长的公共子序列的长度。

因此,如果输入像s1 =“ ababchemxde” s2 =“ pyakcimde” s3 =“ oauctime”,则输出将为4,因为最长的公共子序列为“ acme”。

范例(Python)

让我们看下面的实现以更好地理解-

class Solution:

def solve(self, s1, s2, s3):

m = len(s1)

n = len(s2)

o = len(s3)

dp = [[[0 for i in range(o + 1)] for j in range(n + 1)] for k in range(m + 1)]

for i in range(1, m + 1):

for j in range(1, n + 1):

for k in range(1, o + 1):

if s1[i - 1] == s2[j - 1] == s3[k - 1]:

dp[i][j][k] = 1 + dp[i - 1][j - 1][k - 1]

else:

dp[i][j][k] = max(dp[i - 1][j][k], dp[i][j - 1][k], dp[i][j][k - 1])

return dp[m][n][o]

ob = Solution()

s1 = "ababchemxde"

s2 = "pyakcimde"

s3 = "oauctime"

print(ob.solve(s1, s2, s3))

输入值

"ababchemxde", "pyakcimde", "oauctime"输出结果4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值