用Python实现:字符串匹配算法之暴力匹配(BF)

BF算法,是一种简单朴素的模式匹配算法,常用于在一个主串 S 内查找一个子串 T 的出现位置。

核心思想与操作是:

  1. 对于给定的主串 S 与子串 P ,主串 S 的长度为 N,子串 T 的长度为 M ;
  2. 首先,将 S[1] 和 T[1] 进行比较;
  3. 若相等,则再比较 S[2] 和 T[2] ,一直到 T[M] 为止;
  4. 若 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))

结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_38682860/article/details/108813666