【算法】KMP算法实现顺序串各种模式匹配运算的算法设计

本文介绍了如何使用C++实现KMP算法,包括构建目标串和模式串,计算BF算法结果,以及生成next和nextval数组。通过这些数组,KMP算法能够高效地找出模式串在目标串中的位置。
摘要由CSDN通过智能技术生成
【C++版】

一、设计任务:

编写程序,利用顺序串的基本运算,建立目标串以及模式串,用BF算法求出t在s中的位置,求出模式串的next数组以及nextval数组。KMP算法使用next数组以及改进的KMP算法使用nextval数组求出t在s中的位置,并给出经过各种模式匹配算法的结果。

二、源代码:

头文件:
#define MaxSize 100  //指定串的最大长度
class PatternMatching {
     //模式匹配
public:
    typedef struct
    {
   
        char data[MaxSize];  //串字符
        int length;  //串长
    } SqString;  // 声明顺序串类型
	
	//静态方法
    static void StrAssign(SqString &s, const char cStr[]);  //生成串
    static void DestroyStr(SqString &s);  //销毁串
    static void DispStr(SqString s );  //输出串
    static int BF(SqString s,SqString t);  //BF算法
    static void GetNext(SqString t,int next[]);  //求next数组
    static int KMPIndex(SqString s,SqString t);  //KMP算法
    static void GetNextVal(SqString t,int nextVal[]);  //求nextVal数组
    static int KMPIndexImprove(SqString s,SqString t);  //改进后的KMP算法

};
源文件:
#include "PatternMatching.h"
#include <iostream>
using namespace std;

int main()
{
   
    PatternMatching::SqString s, t;  //声明目标串s和模式串t
    int next[MaxSize];
    int nextVal[MaxSize];

    PatternMatching::StrAssign(s, (char *) "abcabcdabcdeabcdefabcdefg");  //生成串
    PatternMatching::StrAssign(t, (char 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值