数据结构---串

bf算法

最简单的算法

一个一个的慢慢匹配,看看能不能找到相同的

但是时间复杂度过于大,比较耗时间

//b是长的字符串,a是短的字符串
int mate(char *b,char *a){
    int i=0,j=0;
    while(i< strlen(b)&&j< strlen(a)){
        //如果字符串相同,就继续加1
        if(b[i]==a[j]){
            i++;
            j++;
        } else{//如果不同的话就要把i指针向前回到之前的那个位置,然后+1
            i=i-j+1;
            j=0;
        }
    }
    //如果j的长度等于了a字符串的长度,那么说明匹配成功
    if(j== strlen(a)){
        return i- strlen(a)+1;
    }
    return 0;
}

kmp算法

精华的地方就在于i是只会向后走,不会回头
利用已经掌握了的信息,避免重复计算

posted @ 2022-09-26 20:41  yangstar  阅读(23)  评论(0编辑  收藏  举报