1.BF算法:
int BF(string& maistr, string& substr,int pos=0)
{
int mailen = maistr.size();
int sublen = substr.size();
int i = pos;
int j = 0;
if (pos >= mailen) return -1;
if (mailen < sublen) return -1;
if (mailen == 0 || sublen == 0) return -1;
while (i < mailen && j < sublen)
{
if (maistr[i] == substr[j])
{
i++;
j++;
}
else
{
i = i - j + 1;
j = 0;
}
}
return j == sublen ? i - j : -1;
}
2.KMP算法:
int BF(string& maistr, string& substr,int pos=0)
{
int mailen = maistr.size();
int sublen = substr.size();
int i = pos;
int j = 0;
if (pos >= mailen) return -1;
if (mailen < sublen) return -1;
if (mailen == 0 || sublen == 0) return -1;
while (i < mailen && j < sublen)
{
if (maistr[i] == substr[j])
{
i++;
j++;
}
else
{
i = i - j + 1;
j = 0;
}
}
return j == sublen ? i - j : -1;
}
参考:BF与KMP算法初步认知