美文网首页C
字符串查找BF算法

字符串查找BF算法

作者: 9a957efaf40a | 来源:发表于2019-01-18 10:16 被阅读11次

BF(Brute Force)算法为暴力匹配算法。其基本思路如下:

  • src的第一个字符开始和子串str的第一个字符进行比较,如果相等,则比较下一个,依次类推
  • 如果不等,则从src的第二个字符开始和子串str的第一个字符进行比较,如果相等,则比较下一个,依次类推
  • 如果不等,则从src的第三个字符开始比较.....

该算法比较简单,如果src长度为n,子串str长度为m,则时间复杂度为O(n*m):

/*
 Brute Force算法,时间复杂度为O(m*n);
 */
char *BF(const char *src, const char *str) {
    // 最终找到的位置的指针
    char *ptr = NULL;
    // src的遍历起始位置
    const char *begin = src;
    // 要查找的子串的长度
    size_t length = strlen(str);
    // 源串的长度
    size_t src_length = strlen(src);
BEGIN:
    while (1) {
        // 子串比剩余src长,则直接返回
        if (src_length - (begin - src) < length) {
            break;
        }
        // 否则从src当前位置开始依次比较
        for (int i = 0; i < length; i++) {
            // begin不等于str
            if (begin[i] != str[i]) {
                // begin后移
                begin++;
                // 重新判断并循环
                goto BEGIN;
            }
        }
        // 如果一次for循环执行完毕,表示查找到了
        ptr = (char *)begin;
        break;
    }
    return ptr;
}
int main(int argc, const char * argv[]) {
    
    __unused char *ptr = BF("hello world", "world");
    
    return 0;
}

相关文章

  • KMP算法文章合集

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

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

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

  • 字符串查找BF算法

    BF(Brute Force)算法为暴力匹配算法。其基本思路如下: 从src的第一个字符开始和子串str的第一个字...

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

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

  • 学习BM算法的姿势

    BM算法简介 BM是字符串搜索算法。 字符串搜索单模式下有BF、RK、BM、KMP算法,其中BF是暴力搜索,RK是...

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

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

  • 字符串匹配

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

  • 20-字符串匹配

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

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

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

  • 算法(2)KMP算法

    1.0 问题描述 实现KMP算法查找字符串。 2.0 问题分析 “KMP算法”是对字符串查找“简单算法”的优化。 ...

网友评论

    本文标题:字符串查找BF算法

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