串的模式匹配算法总结(朴素模式匹配及求next数组)

本文深入探讨了模式匹配算法,包括朴素的字符串匹配方法、KMP算法及其next数组的计算,以及KMP算法的优化——nextval数组的求解。通过这些算法,可以更高效地进行文本搜索和比较,减少不必要的比较操作。
摘要由CSDN通过智能技术生成

系列文章目录


一、朴素模式匹配(代码及图示)

#define MaxLEN 255
typedef struct{
    char ch[MaxSize];
    int length
}SString;

int Index(SString S, SString T)
{
    int i = 1 , 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;
}

在这里插入图片描述

二、KMP算法求NEXT数组

相比于朴素模式来说,减少了大量的比较。

1.求next数组

求 abaabc 的next 数组 第一位第二位填(0 ,1 )不变

在这里插入图片描述

2.匹配

在这里插入图片描述

三、改进KMP算法(nextval数组求法)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值