2023-04-05-串的简单模式匹配(BF算法)

//串的简单模式匹配(BF算法)
#include <stdio.h>

#define MAXSIZE 30

typedef struct
{
    char ch[MAXSIZE];
    int length;
}SString;

int SString_BFindex(SString S,SString T)//串的简单的模式匹配算法,BF算法
{
    int i=0,j=0;//字符串数组从0开始匹配
    while(i<S.length && j<T.length)
    {
        if(S.ch[i]==T.ch[j])
        {
            i++;
            j++;
        }
        else
        {
            i=i-j+1;//回到刚开始匹配的第一个位置,+1来从下一个位置开始匹配
            j=0;
        }
    }
    if(j=T.length)
    {
        return i-T.length+1;//i在最后一个元素比较时多加了一个1,此时的i就相当于元素在字符串中的位置,i-length就是比较的前一个位置,+1就是开始比较的位置
    }
    else
    {
        return 0;
    }
}

int main()
{
    SString s1={
        "ababcabcacbab",
        13
    };
    SString s2=
    {
        "abc",
        3
    };
    int x = SString_BFindex(s1,s2);
    printf("%d\n",x);
    return 0;
}

 

posted @ 2023-04-05 21:21  正方形的被子  阅读(49)  评论(0)    收藏  举报