数据结构---串
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是只会向后走,不会回头
利用已经掌握了的信息,避免重复计算