字符串匹配返回下标
时间: 2023-08-09 12:05:11 浏览: 69
好的,您可以使用KMP算法来实现字符串匹配并返回下标。
KMP算法是一种字符串匹配算法,它的核心思想是:在匹配过程中,利用已经匹配过的信息,尽可能减少不必要的匹配。具体实现过程如下:
1. 预处理模式串(即要匹配的字符串),生成next数组,next[i]表示当模式串的第i个字符与文本串不匹配时,下一次匹配模式串应该从哪个位置开始。
2. 在文本串中匹配模式串,当匹配失败时,根据next数组的值调整模式串的位置。
3. 当匹配成功时,返回文本串中模式串第一次出现的位置。
下面是一个使用KMP算法实现字符串匹配并返回下标的示例代码(假设模式串为pattern,文本串为text):
```python
def kmp(text, pattern):
n = len(text)
m = len(pattern)
next = [0] * m
# 生成next数组
i = 1
j = 0
while i < m:
if pattern[i] == pattern[j]:
j += 1
next[i] = j
i += 1
elif j > 0:
j = next[j-1]
else:
next[i] = 0
i += 1
# 在文本串中匹配模式串
i = 0
j = 0
while i < n:
if text[i] == pattern[j]:
i += 1
j += 1
if j == m:
return i - m
elif j > 0:
j = next[j-1]
else:
i += 1
return -1
```
在以上代码中,kmp函数接受两个字符串text和pattern作为参数,返回pattern在text中第一次出现的位置。如果pattern不在text中出现,则返回-1。
阅读全文