Python BF算法
时间: 2023-11-05 14:21:54 浏览: 93
BF算法查找字符串中字符
Python中的BF算法是指Brute Force(暴力检索算法),它是一种简单直观的字符串匹配算法。该算法的基本思想是从目标串s的第一个字符开始,逐个与模式串t的字符进行比较,如果相等则继续比较下一个字符,如果不相等,则从目标串s的下一个字符重新开始与模式串t进行比较,直到找到匹配或者目标串s的字符遍历完成。
具体实现时,我们使用两个索引i和j来分别指向目标串s和模式串t的字符位置,每次比较时,如果s[i]与t[j]相等,则i和j都向后移动一位,继续比较下一个字符;如果s[i]与t[j]不相等,则将i重置为上一次不相等位置的下一个位置,将j重置为0,重新开始匹配。当j等于模式串t的长度时,表示完全匹配成功,返回匹配成功的起始位置k。如果目标串s遍历完且未找到匹配,则返回-1表示匹配失败。
在Python中,可以通过如下代码实现BF算法:
```python
def BF(s, t):
i = 0
j = 0
k = 0
flag1 = -1
while (i < len(s) and j < len(t)):
# 匹配成功
if (i - k == j) and (j == len(t) - 1) and (s[i == t[j]):
flag1 = k
break
# s和t相等就继续向后匹配
if s[i == t[j]:
i = i + 1
j = j + 1
# 不相等从k的位置开始匹配
else:
k = k + 1
i = k
j = 0
# 假如s中所剩字符小于t中所剩字符
if (len(s) - i) < len(t):
flag1 = -1
break
return flag1
if __name__ == '__main__':
s = input('输入目标串s:')
t = input('输入模式串t:')
flag = BF(s, t)
if flag != -1:
print('t在s的位置:', flag)
else:
print(flag, '匹配失败')
```
以上是一个简单的实现BF算法的Python代码。用户需要输入目标串s和模式串t,然后调用BF函数进行匹配,如果匹配成功,则输出模式串t在目标串s中的位置;如果匹配失败,则输出-1。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文