天天看點

串的定義和BF算法的簡單使用

串其實也是線性結構,隻是串的内容必須是字元,是以他又有他的不同的應用,最常見的應該是串的模式比對,

下面就來說說模式比對中的BF算法,其實就是一個一個向後面比對,如果沒有成功,那麼回到主串剛開始的字元後面一個字元開始新的一次比對,之後重複這個操作,如果比對成功,那麼傳回第一個字元的位置,如果不成功,那麼傳回0,

1.串的定義

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef struct 
{
    char ch[MaxSize + 1];
    int length;
}String;      

2.BF算法

int indexBF(String S,String T,int pos) 
{
    int i = pos;
    int j = 1;
    while (i<=S.length&&j<=T.length)
    {
        if (S.ch[i]==T.ch[j]) 
        {
            i++;
            j++;
        }
        else
        {
            i = i - j + 2;
            j = 1;
        }
    }
    if (j>T.length)
    {
        return i - T.length;
    }
    else
    {
        return 0;
    }
}      

好了,我們下回見,peace