数据结构- 串的模式匹配算法 BF和 KMP算法

本文介绍了两种字符串模式匹配算法——BF(Brute-Force)算法和KMP算法。BF算法通过逐个字符比较实现匹配,而KMP算法利用部分匹配结果避免了不必要的回溯,提高了效率。KMP算法的关键在于计算next数组,表示模式串中最大相同前后缀子串的长度,从而决定模式串向右滑动的距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

Brute-Force算法的思想

1.BF(Brute-Force)算法  

Brute-Force算法的基本思想是:

1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s 的第二个字符起再重新和串t进行比较。

2) 依此类推,直至串t 中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹配成功,此时串t的第一个字符在串s 中的位置就是t 在s中的位置,否则模式匹配不成功。

Brute-Force算法的实现   


c语言实现:

// Test.cpp : Defines the entry point for the console application.  //  #include "stdafx.h"  #include <stdio.h>  #include "stdlib.h"#include <iostream>using namespace std;//宏定义    #define TRUE   1    #define FALSE   0    #define OK    1    #define ERROR   0  #define  MAXSTRLEN 100typedef char SString[MAXSTRLEN + 1];/************************************************************************//*  返回子串T在主串S中第pos位置之后的位置,若不存在,返回0*//************************************************************************/int BFindex(SString S, SString T, int pos)if (pos <1 ||  pos > S[0] ) exit(ERROR); int i = pos, j =1while (i<= S[0] && j <= T[0]) {  if (S[i] == T[j])  {   ++i; ++j;  } else {   i = i- j+ 2;   j = 1;  } } if(j > T[0]) return i - T[0]; return ERROR;}void main(){ SString S = {
   
   13,'a'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值