一、模式匹配是什么?
子串的定位运算。
模式匹配有两个字符串S和T,设S是字串,T为子串,在主串S中查找与模式T相匹配的子串,若匹配成功,确定相匹配的子串中的第一个字符在主串中出现的位置。
二、模式匹配的算法
1.BF算法(朴素模式匹配算法)
1.1 算法思路
从主串的第一个字符与模式串中的第一个字符进行比较,若相等则继续比较,若不相等则从主串中不相等的位置与模式串中的第一个字符进行比较。
1.2 如何实现
代码如下(示例):
#include <stdio.h>
#define MAXLEN 255
//顺序存储
typedef struct{
char ch[MAXLEN+1];
int length;
}SString;
int StrLength(char* ch){
int i=0;
while(ch[i]!='\0')
i++;
return i;
}
//BF算法
int Index_BF(SString S,SString T,int pos){
int i=pos,j=1;
while(i<=S.length&&j<=T.length){//找成功或S找完后仍未找到
if(S.ch[i]==T

本文介绍了模式匹配的基本概念,包括在主串中查找子串的过程。详细阐述了BF(朴素)算法和KMP算法的工作原理,提供示例代码展示这两种算法的实现。BF算法每次不匹配时会回溯,时间复杂度为O(n*m);而KMP算法利用部分匹配表避免回溯,提高了效率,时间复杂度同样为O(n*m)。
&spm=1001.2101.3001.5002&articleId=127355210&d=1&t=3&u=509dc0a2695544cab394161aebccbec5)
1701

被折叠的 条评论
为什么被折叠?



