xtu oj 共同的子串代码怎么写
时间: 2024-12-11 10:27:34 浏览: 52
XTU OJ(通常指西北工业大学在线评测系统)是一个编程竞赛平台,其中遇到求两个字符串共同子串的问题,可以使用滑动窗口或者KMP算法来解决。以下是使用Python语言的一个简单KMP算法的例子:
```python
def compute_common_substring(str1, str2):
# 创建next数组存储模式匹配的信息
next_array = [0] * (len(str2) + 1)
j = -1
for i in range(1, len(str2) + 1):
while j > -1 and str2[i - 1] != str2[j]:
j = next_array[j]
if str2[i - 1] == str2[j]:
j += 1
next_array[i] = j
max_length = 0
end_index = 0
for i in range(len(str1)):
while end_index > -1 and str1[i] != str2[end_index]:
end_index = next_array[end_index]
if str1[i] == str2[end_index]:
end_index += 1
if end_index > max_length:
max_length = end_index
common_substring = str1[i-max_length+1:i+1]
return common_substring
# 测试
str1 = "abcdef"
str2 = "bcdfgh"
print(compute_common_substring(str1, str2)) # 输出: 'bcd'
```
这个函数首先计算出str2的next数组,然后使用这个数组作为滑动窗口,在str1中查找与str2相匹配的部分。如果找到更长的公共子串,就更新结果。
阅读全文