使用列表、集合编程实现,输入两个字符串,求两个字符串共有的最长子串
时间: 2024-11-24 09:44:05 浏览: 4
当你想要找出两个字符串中共有的最长子串时,可以使用动态规划(Dynamic Programming)的方法,结合列表(List)或集合(Set)的数据结构来辅助计算。这里有一个简单的Python示例:
```python
def longest_common_substring(s1, s2):
m = len(s1)
n = len(s2)
# 创建一个二维列表存储每个字符的位置信息
dp = [[0] * (n + 1) for _ in range(m + 1)]
max_length = 0
end_index = 0
for i in range(1, m + 1):
for j in range(1, n + 1):
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] > max_length:
max_length = dp[i][j]
end_index = i - 1
else:
dp[i][j] = 0
# 从结束索引开始回溯,构建最长子串
common_substring = s1[end_index - max_length + 1:end_index + 1]
return common_substring
# 示例:
s1 = "abcde"
s2 = "ace"
result = longest_common_substring(s1, s2)
print(f"最长公共子串是: {result}")
阅读全文