BF算法,是一种简单朴素的模式匹配算法,常用于在一个主串 S 内查找一个子串 T 的出现位置。
核心思想与操作是:
- 对于给定的主串 S 与子串 P ,主串 S 的长度为 N,子串 T 的长度为 M ;
- 首先,将 S[1] 和 T[1] 进行比较;
- 若相等,则再比较 S[2] 和 T[2] ,一直到 T[M] 为止;
- 若 S[1] 和 T[1] 不等,则 T 向右移动一个字符的位置,再依次进行比较
代码如下:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def BF(s1,s2):
""" BF算法 """
i = 0
j = 0
while(i < len(s1) and j < len(s2)):
if(s1[i] == s2[j]):
i += 1
j += 1
else:
i = i - j + 1
j = 0
if(j >= len(s2)):
return i - len(s2)
else:
return 0
if __name__ == "__main__":
a1="abcaaaabbbbcccabcbabdbcsbbbbnnn"
a2='ccabcba'
b=BF(a1,a2)
print(b)
s1 = "ababcabcacbab"
s2 = "abcac"
print(BF(s1,s2))
结果: