编程寻找两个字符串的最长公共子序列 要求可以输入两个字符串 输出最长公共子序列以及长度
时间: 2023-10-08 07:11:37 浏览: 200
查询两个字符串的最长公共子序列
好的,以下是Python的代码实现:
```python
def lcs(str1, str2):
m = len(str1)
n = len(str2)
c = [[0 for x in range(n+1)] for y in range(m+1)]
for i in range(1, m+1):
for j in range(1, n+1):
if str1[i-1] == str2[j-1]:
c[i][j] = c[i-1][j-1] + 1
else:
c[i][j] = max(c[i][j-1], c[i-1][j])
result = ""
while m > 0 and n > 0:
if str1[m-1] == str2[n-1]:
result = str1[m-1] + result
m -= 1
n -= 1
elif c[m-1][n] > c[m][n-1]:
m -= 1
else:
n -= 1
return result, c[len(str1)][len(str2)]
```
函数 `lcs` 接受两个字符串 `str1` 和 `str2`,返回一个元组 `(result, length)`,其中 `result` 为最长公共子序列,`length` 为其长度。
例如,如果输入 `str1 = "ABCDGH"` 和 `str2 = "AEDFHR"`,则调用 `lcs(str1, str2)` 将返回 `("ADH", 3)`。
阅读全文