python编写程序,输入字符串A、B,输出A和B中的最长公共子串
时间: 2023-12-20 16:19:16 浏览: 131
好的,可以使用动态规划来解决这个问题。下面是Python代码实现:
```python
def longest_common_substring(A, B):
m, n = len(A), len(B)
# 构造一个二维的dp数组,dp[i][j]表示A[0:i]和B[0:j]的最长公共子串长度
dp = [[0] * (n + 1) for _ in range(m + 1)]
max_len = 0 # 最长公共子串长度
end = 0 # 最长公共子串在A中的结束位置
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 = "abcdefg"
B = "bcde"
print(longest_common_substring(A, B)) # 输出"bcde"
```
以上代码中,我们使用dp数组来记录每个子问题的最优解,最后返回的是A中最长公共子串。
阅读全文