字符匹配BF算法

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
**BF算法(Brute Force算法)属于朴素的模式匹配算法,它的核心思想:
**-有两个字符串S和T,长度为N和M。首先s[1]和t[1]比较,若相等,则
** 再比较s[2]和t[2],一直到T[M]为止;若S[1]和t[1]不等,则T向右移
** 动一个字符的位置,再依次进行比较
**-该算法最坏情况下要进行M*(N-M+1)次比较,时间复杂度为O(M*N)
*/
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0

#define MAXSTRLEN 100
#define SRC_STR "I love Fishc"
#define DST_STR "Fishc"
typedef struct sequence_string{
    char str[MAXSTRLEN];
    int len;
}sq_str;

int brute_force(sq_str dst,sq_str src)
{
    int i=0,j=0;

    while(i<dst.len&&j<src.len)
    {
        if(*(dst.str+i)==*(src.str+j))
        {
            i++;
            j++;
        }
        else
        {
            i=0;
            j=j-i+1;
        }
    }
    if(i==dst.len)
            return j-dst.len;
        else
            return -1;
}

int main()
{
   int index=0;
   sq_str src_str={
        SRC_STR,
        strlen(SRC_STR)
   };
   sq_str dst_str={
       DST_STR,
       strlen(DST_STR)
   };

    index=brute_force(dst_str,src_str);

    printf("%d",index);
    return 0;
}

你可能感兴趣的:(BF,brute,Force算法)