字符串匹配算法之暴力匹配(BF)Python实现
BF算法,是一种简单朴素的模式匹配算法,常用于在一个主串 S 内查找一个子串 T 的出现位置。
核心思想与操作是:
- 对于给定的主串 S 与子串 P ,主串 S 的长度为 N,子串 T 的长度为 M ;
- 首先,将 S[1] 和 T[1] 进行比较;
- 若相等,则再比较 S[2] 和 T[2] ,一直到 T[M] 为止;
- 若 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))
结果: