用python查找字符串的公共子串
时间: 2023-09-07 17:15:36 浏览: 132
要查找两个字符串的公共子串,您可以使用“动态规划”算法。下面是一个示例代码,可以查找两个字符串的最长公共子串:
```python
def find_longest_common_substring(string1, string2):
m = len(string1)
n = len(string2)
# 用一个二维列表记录最长公共子串的长度
common_substring = [[0] * (n+1) for _ in range(m+1)]
longest_length = 0
# 用一个变量记录最长公共子串的结束位置
end_position = 0
for i in range(1, m+1):
for j in range(1, n+1):
if string1[i-1] == string2[j-1]:
common_substring[i][j] = common_substring[i-1][j-1] + 1
if common_substring[i][j] > longest_length:
longest_length = common_substring[i][j]
end_position = i
else:
common_substring[i][j] = 0
start_position = end_position - longest_length
return string1[start_position:end_position]
# 示例
string1 = "abcdefg"
string2 = "cdefghij"
common_substring = find_longest_common_substring(string1, string2)
print(common_substring)
```
在这个程序中,我们定义了一个函数`find_longest_common_substring()`,它接受两个字符串作为参数,并返回它们的最长公共子串。我们首先创建一个二维列表`common_substring`,其中`common_substring[i][j]`表示以字符串1的第i个字符和字符串2的第j个字符结尾的最长公共子串的长度。然后,我们遍历两个字符串的每个字符,并使用动态规划算法计算它们的最长公共子串。最后,我们返回最长公共子串。
希望这个程序能够帮助您找到两个字符串的最长公共子串。如果您还有其他问题,请随时问我。
阅读全文