BF算法
bf算法其实只是普通的模式匹配算法。
BF算法的思想:
将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。
代码如下:
//BF算法遍历母字符串查找子字符串 //mom:母串 son:子串 //mompos:母串遍历的位置 sonpos:子串遍历的位置 //tempmompos:临时存储母串位置值 int FindZiString(const char* mom, const char* son) { int son_size = strlen(son); int mom_size = strlen(mom); printf("son_size = %d\n mom_size = %d\n", son_size,mom_size); int mompos, sonpos; int tempmompos; for (mompos = 0; mompos <= mom_size - son_size ; mompos++) { for (sonpos = 0, tempmompos = mompos; sonpos < son_size; sonpos++) { if (*(son + sonpos) != *(mom + tempmompos + sonpos)) break; if (sonpos == son_size - 1) return tempmompos ; } } return 0; }
//测试代码: int main() { char Big[256] = "sagsdhsfhf"; char Small[256] = "fhf"; int pos = FindZiString(Big, Small); if (0 == pos) printf("no this son"); else printf("pos = %d\n", pos); return 0; }
结果如下: