美文网首页
c语言实现horspool算法

c语言实现horspool算法

作者: 一路向后 | 来源:发表于2021-04-12 21:59 被阅读0次

1.源码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int horspool(char *str, char *pat)
{
    char map[256];
    int l[2];
    int i, j;

    l[0] = strlen(str);
    l[1] = strlen(pat);

    for(i=0; i<256; i++)
    {
        map[i] = l[1];
    }

    for(i=0; i<l[1]-1; i++)
    {
        map[pat[i]] = l[1] - 1 - i;
    }

    i = 0;
    j = l[1]-1;

    while(i < l[0] && j != 0)
    {
        if(str[i+j] != pat[j])
        {
            i += map[str[i+j]];
            j=l[1]-1;
            continue;
        }

        j--;
    }

    if(j == 0)
    {
        return i;
    }

    return -1;
}

int main()
{
    char str[1024] = "bhallobbarberllo";
    char pat[64] = "barber";

    printf("%d\n", horspool(str, pat));

    return 0;
}

2.编译源码

$ gcc -o example examle.c -std=c89

3.运行及其结果

$ ./example
7

相关文章

网友评论

      本文标题:c语言实现horspool算法

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