数据结构与算法08——串匹配算法BF算法

549 阅读1分钟

串,字符串。
给定两个串:一个主串S,一个串T。S若否包含T,T是S的子串,即匹配;若S不包含T,模式匹配失败,T不是S的字串。所以串的匹配,简单理解为,T是不是S的字串,或者S是否包含T。
串的匹配算法有两种:

  1. BF算法
  2. RK算法

BF算法

暴风算法?暴力比较。
假设有两串 S [ abbacdbbbba ] T [ cdbb ]

我们来演示一边匹配过程

第一次匹配:

位置i = 1 时,S[1] != T[1], T 后移一位,从S[2]再开始匹配

第二次匹配:

现在从S[2]开始匹配

  • S[2] == T[1]
  • S[3] == T[2]
  • S[4] != T[3], 说明从S[2]开始后面T个长度的"cdcd"不是匹配的结果 , T再次后移,从比较S[3]开始匹配

第三次匹配

现在从S[3]开始匹配

  • S[3]!=T[1],所以T再次后移,从S[4]开始匹配

第四次匹配

现在从S[4]开始匹配

  • S[4] == T[1]
  • S[5] == T[2]
  • S[6] == T[3]
  • S[7] == T[4],

从S[4]开始到S[7] 与T匹配成功,结束

BF算法总结

如其名,T与S一位一位的暴力匹配比较,不对,立马换S的下一个字符重新开始一位一位的匹配比较,直到匹配成功或者字符比较完结束。