KMP算法查找子串
目录
- KMP算法查找子串
- 1、字符串形式
- 2、字节流形式
1、字符串形式
代码实现:
char* my_strstr(const char* src, const char* dst)
{
const char* sp, *dp;
if(src == NULL || dst == NULL) return NULL;
while(*src != 0)
{
sp = src;
dp = dst;
while(*sp++ == *dp++)
{
if(*dp == 0) return (char *)src;
}
src++;
}
return NULL;
}
测试:
2、字节流形式
int mymatch(const void* src, uint32_t ssize, const void* dst, uint32_t dsize)
{
int i = 0, j = 0, k = 0;
const uint8_t* s;
const uint8_t* d;
for(i = 0; i < ssize; i++)
{
s = &(((const uint8_t *)src)[i]);
d = &(((const uint8_t *)dst)[0]);
for(k = 0; k < dsize; k++)
{
if(*d++ == *s++)
if(++j == dsize)
return i;
}
}
return (int)-1;
}
ends…