字符串匹配算法的C/C++语言实现

先上传一个朴素的字符串匹配算法.。

他用一个循环来找出全部的有效位移,这个循环对n-m+1个可能的s每一个每一个字符检测条件P【1~m】 = T【s+1   ~  s+m 】 。

具体的代码如下:

#include <stdio.h>
#include <string.h>
int string_matcher(char *src,char *ptn){
    int i=0,j=0;
    int slen = strlen(src);
    int plen = strlen(ptn);
    
    while(j<plen && i<slen){
        if(src[i] == ptn[j]){
                           i++;
                           j++;
                           }                  
        else {
             i = i - j + 1;
             j = 0;
             }                 
        }
    if(j == plen)
            return i-plen;
    else
    return -1;
    }
int main(){
    char *s = "bacbababacabcbab";
    char *p =     "ababaca";
    int loc = string_matcher(s,p);
    printf("%d\n",loc);
    getchar();
    return 0;
    }

示例结果:


你可能感兴趣的:(字符串匹配算法的C/C++语言实现)