美文网首页
字符串匹配之BF算法

字符串匹配之BF算法

作者: ChinaGoodStaff | 来源:发表于2019-11-22 16:07 被阅读0次
算法原理

BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串T的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较T的第二个字符和P的第二个字符;若不相等,则比较T的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。
BF算法是一种蛮力算法。

举例说明:通过C语言实现,找出字符串P第一次出现在字符串T中的位置索引

T:  abcbcabab

P:  aba
  • BF算法的比较过程,我们通过下面的表格展示我们比较的过程

*为占位符 Y表示匹配 N表示不相等表示匹配成功 i为字符串T的索引 j为字符串P的索引

i=0;j=0(Y) i=1;j=1(Y) i=2;j=2(N)
abcbcabab abcbcabab abcbcabab
aba aba aba
i=1;j=0(N)
abcbcabab
*aba
i=2;j=0(N)
abcbcabab
**aba
i=3;j=0(N)
abcbcabab
***aba
i=4;j=0(N)
abcbcabab
****aba
i=5;j=0(Y) i=5;j=1(Y) i=5;j=2(√)
abcbcabab abcbcabab abcbcabab
*****aba *****aba *****aba

从上面的实现过程,我们不难发现,通过BF算法最坏的的情况下,我们可能需要比较(10-3)*3次才能完成最后的结果

  • 代码实现
#include <stdio.h>
#include <string.h>

size_t stringLength(const char *str);//函数声明
int rangeOfString(const char * P, const char * T);//函数声明

int main(int argc, const char * argv[]) {
    
    //定义目标字符串P和模式字符串T
    char *P = "abcbcabab";
    char *T = "aba";
    printf("字符串T在字符串P中第一次出现的索引:%d\n", rangeOfString(P, T));
    return rangeOfString(P, T);
}

int rangeOfString(const char * P, const char * T) {
    //计算字符串P和T的长度,需要引用#include <string.h>文件
    //也可以通过stringOfLength(P)自定义方法获取字符串长度
    int pLength = (int)strlen(P);
    int TLength = (int)strlen(T);
    printf("字符串P的长度:%d\n", pLength);
    printf("字符串T的长度:%d\n", TLength);
    int i,j;
    i = 0;
    while (i < pLength) {
        j = 0;
        while (P[i] == T[j] && j < TLength) {
            i++;
            j ++;
        }
        if (j == TLength) {
            return (i - TLength);
        }
        i = i - j +1;
    }
    return i;
}

size_t stringOfLength(const char *str){
    unsigned long length = 0;
    while (*str++!=NULL) {
        length ++;
    }
    return length;
}

相关文章

  • 字符串匹配算法

    以下为学习 《数据结构与算法之美 -- 字符串匹配》 的记录。 BF算法 即暴力匹配算法,循环遍历匹配。 RK算法...

  • 字符串匹配

    indexOf 底层就是使用字符串匹配算法 字符串匹配算法很多 BF( Brute Force)算法 暴力匹配算...

  • 20-字符串匹配

    字符串匹配 这章节,我们会讲到几大典型的字符串匹配算法 BF算法 BF算法是最最符合正常人逻辑思维的一种匹配模式,...

  • 字符串匹配基础上——BF 算法和 RK 算法

    单模式匹配算法,也就是一个字符串和另一个字符串进行匹配。 1. BF 算法 BF 算法中的 BF 是 Brute ...

  • 数据结构与算法 -- 串,BF算法和RK算法

    BF算法 BF(Brute Force)算法,即暴力匹配算法 如果在字符串A中查找字符串B,那么字符串A就是主串,...

  • KMP算法文章合集

    字符串的查找:朴素查找算法和KMP算法 暴力匹配算法与KMP算法(串的匹配) 字符串查找算法BF和KMP 字符串匹...

  • KMP字符串匹配算法

    KMP字符串匹配算法 先总结一下之前的几种字符串匹配算法 1 BF算法, 最简单的字符串匹配算法, 可以直接使用s...

  • 记录数据结构与算法的学习之路 -----005.BF算法与RK算

    1.BF算法 1.1 定义 BF算法,即暴风算法,也有人称为朴素算法、暴力算法。BF算法是一种做字符串匹配的算法。...

  • 字符串匹配算法

    场景:字符串A为主串,字符串B为模式串,比较字符串B是否能够在字符串A中进行匹配? 匹配算法:BF算法和RK算法。...

  • 数据结构与算法-字符串

    字符串又被成为串 字符串的存储结构 字符串的比较 朴素的模式匹配算法 BF算法

网友评论

      本文标题:字符串匹配之BF算法

      本文链接:https://www.haomeiwen.com/subject/kuqqwctx.html