编写程序,输入字符串A、B,输出A和B中的最长公共子串
时间: 2023-12-20 08:19:16 浏览: 81
输入两个字符串,求它们最长公共字串的长度
5星 · 资源好评率100%
好的,我可以给你提供一个Python的实现。以下是代码:
```python
def longest_common_substring(A, B):
m, n = len(A), len(B)
dp = [[0] * (n + 1) for _ in range(m + 1)]
max_len, end = 0, 0
for i in range(1, m + 1):
for j in range(1, n + 1):
if A[i - 1] == B[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] > max_len:
max_len = dp[i][j]
end = i - 1
else:
dp[i][j] = 0
return A[end - max_len + 1: end + 1]
# 测试
A = 'abcde'
B = 'abfce'
print(longest_common_substring(A, B)) # 输出 'abc'
```
这段代码中,我们定义了一个函数`longest_common_substring`,它接受两个字符串A和B作为输入,返回A和B中的最长公共子串。
在函数内部,我们首先使用动态规划的方法计算出了A和B的最长公共子串的长度,并用变量`max_len`和`end`记录下来最长公共子串的长度和在A中的结束位置。接下来,我们通过`end - max_len + 1`和`end`来求出最长公共子串在A中的起始位置,然后通过切片操作来获取最长公共子串。最后,我们将最长公共子串作为函数的返回值。
在测试代码中,我们定义了两个字符串A和B,然后调用`longest_common_substring`函数来计算它们的最长公共子串,并输出结果。
阅读全文