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

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))

结果:

 

posted @ 2020-06-02 15:44  Roronoa-Zoro  阅读(562)  评论(0编辑  收藏  举报