#include <stdio.h>
/**
* @brief 模式匹配
* @param str[]: 主串
* @param cstr[]: 子串
* @param strL: 主串长度
* @param strC: 子串长度
* @retval 下标
*/
int match(char str[],char cstr[],int strL,int strC){
int k = 0; //标识主串开始匹配的位置,匹配成功用于返回
int i = k,j=0; //i 和 j 分别用于每次匹配时的下标
while (i<strL && j<strC)
{
if(str[i] == cstr[j]){ //若匹配单字符了,各个指针+1
++j;
++i;
}else{ //有一个不匹配,则回退
k++;
i = k;
j=0;
}
}
if(j>=strC) return k; //匹配成功
else return 0;
}
int main(){
char str1[] = "1234567";
char str2[] = "4567";
int re = match(str1,str2,7,4);
printf("%d",re);
return 0;
}
朴素模式匹配算法
最新推荐文章于 2024-02-04 08:31:14 发布