在一行输入两个字符串s和英文字符串t,要求在s中查找t。其中,字符串s,t均不包含空格,且长度均小于80. Input: 首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入两个长度不超过80的字符串s和t。 Output 对于每组测试数据,若在s中找到t,则输出"Found!",否则输出"not Found!".引号不必输出
时间: 2024-02-13 10:06:53 浏览: 73
好的,针对这个问题,我提供以下Python代码,使用KMP算法实现字符串匹配:
```python
def kmp(s, t):
n = len(s)
m = len(t)
# 预处理 next 数组
next = [0] * m
j = 0
for i in range(1, m):
while j > 0 and t[i] != t[j]:
j = next[j-1]
if t[i] == t[j]:
j += 1
next[i] = j
# 在 s 中匹配 t
j = 0
for i in range(n):
while j > 0 and s[i] != t[j]:
j = next[j-1]
if s[i] == t[j]:
j += 1
if j == m:
return "Found!"
return "not Found!"
# 读入数据
T = int(input())
for i in range(T):
s, t = input().split()
print(kmp(s, t))
```
代码中的函数 `kmp(s, t)` 实现了KMP算法,输入参数为字符串s和t,返回值为匹配结果。在主程序中,首先读入测试数据的组数T,然后对于每组测试数据,读入两个字符串s和t,并调用 `kmp(s, t)` 函数进行匹配,最后输出匹配结果。
阅读全文