字符串的朴素模式匹配算法

Posted 胖头猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串的朴素模式匹配算法相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <string.h>

//返回第一个子串在主串的位置,找不到返回-1

int StrMatch(char *source, char *match){
    int slen=strlen(source);
    int mlen=strlen(match);
    int i=0,j=0;
    
    
    while(i<slen && j<mlen){//当主串或者子串全部匹配完,就退出循环
        if(source[i] == match[j]){//逐个比较,匹配就比较下一个
            ++i;
            ++j;
        }else{//不匹配就重新回到刚开始的下一个位置
            i = i-j+1;
            j = 0;
        }
    }

    if(j == mlen){//说明子串全部都匹配成功,返回子串在主串的位置
        return  (i-j);
    }else{
        return -1;
    }
    
}

void main(){

    char str[] = "hello, tom ,how are you!";
    char match[] = " tom ";
    int result;

    result = StrMatch(str,match);
    printf("-->%d\n",result);

}

 

以上是关于字符串的朴素模式匹配算法的主要内容,如果未能解决你的问题,请参考以下文章

图解字符串的朴素模式匹配算法

字符串模式匹配KMP算法

数据结构串---BF算法(朴素模式匹配)

字符串的朴素模式匹配算法

PHP实现用于模式搜索的朴素算法(字符串匹配算法)

(王道408考研数据结构)第四章串-第二节:串的模式匹配算法(朴素和KMP)