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 向右移动一个字符的位置,再依次进行比较

代码如下:

 1 def BF(s1,s2):
 2     """ BF算法 """
 3     i = 0
 4     j = 0
 5     while(i < len(s1) and j < len(s2)):
 6         if(s1[i] ==  s2[j]):
 7             i += 1
 8             j += 1
 9         else:
10             i = i - j + 1
11             j = 0
12     if(j >= len(s2)):
13         return i - len(s2)
14     else:
15         return 0
16  
17 if __name__ == "__main__":
18     a1="abcaaaabbbbcccabcbabdbcsbbbbnnn"
19     a2=\'ccabcba\'
20     b=BF(a1,a2)
21     print(b)
22     s1 = "ababcabcacbab"
23     s2 = "abcac"
24     print(BF(s1,s2))

结果:

 

版权声明:本文为cong3Z原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/cong3Z/p/13031673.html