python 最长公共子序列
时间: 2024-11-18 16:14:15 浏览: 7
python实现最长公共子序列
5星 · 资源好评率100%
Python 中最长公共子序列(Longest Common Subsequence, LCS)是指两个或多个序列中最长的共同部分,但这些序列可以有不同的排列。计算 LCS 的目的是找出最相似的部分,常用于比较字符串、DNA 序列等。
Python 提供了动态规划算法来解决这个问题,常见的库如 `itertools` 或者编写自定义函数。动态规划的思想是将问题分解成更小的子问题,并存储中间结果以避免重复计算。下面是一个简单的 Python 动态规划实现 LCM 的例子:
```python
from typing import List
def lcs(X: str, Y: str) -> int:
m = len(X)
n = len(Y)
# 创建一个二维数组来存储中间结果
dp = [[0] * (n + 1) for _ in range(m + 1)]
# 遍历矩阵并填充值
for i in range(1, m + 1):
for j in range(1, n + 1):
if X[i - 1] == Y[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
else:
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])
return dp[m][n]
# 示例
X = "ABCDGH"
Y = "AEDFHR"
print("Length of LCS is", lcs(X, Y))
```
阅读全文