字符串数组最长公共子串
时间: 2024-06-16 11:06:49 浏览: 133
要找到字符串数组的最长公共子串,可以使用动态规划的方法。下面是一个示例代码来演示如何找到字符串数组的最长公共子串:
```python
def longest_common_substring(strs):
if not strs:
return ""
# 初始化一个二维数组来保存最长公共子串的长度
dp = [ * (len(strs) + 1) for _ in range(len(strs) + 1)]
max_len = 0 # 最长公共子串的长度
end_index = 0 # 最长公共子串的结束索引
for i in range(1, len(strs) + 1):
for j in range(1, len(strs) + 1):
if strs[i - 1][j - 1] == strs[i - 1][j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] > max_len:
max_len = dp[i][j]
end_index = j - 1
return strs[end_index - max_len + 1: end_index + 1]
strs = ["abcdefg", "abcfeg", "abcfhij"]
result = longest_common_substring(strs)
print(result) # 输出:abcf
```
在上面的代码中,我们使用一个二维数组`dp`来保存最长公共子串的长度。通过遍历字符串数组中的每个字符,我们可以比较当前字符与前一个字符是否相等,如果相等,则将当前位置的`dp`值更新为前一个位置的`dp`值加1。同时,我们还需要记录最长公共子串的长度和结束索引。最后,我们可以通过切片操作来获取最长公共子串。
阅读全文