现有主串abcdbdadbabcadda,子串abcad,用BF算法进行串匹配,写出过程,并计算比较次数
时间: 2024-04-05 13:31:21 浏览: 87
实现并对比三种基本的字符串匹配算法
好的,我为您演示一下使用BF算法进行串匹配的过程,并估算比较次数:
主串:a b c d b d a d b a b c a d d a
子串:a b c a d
从主串第一个字符开始匹配:
第1次比较:a != a,比较次数1
第2次比较:b != b,比较次数2
第3次比较:c != c,比较次数3
第4次比较:a != a,比较次数4
第5次比较:d != d,比较次数5
移动主串的位置,从第二个字符开始匹配:
第1次比较:b != a,比较次数6
第2次比较:c != b,比较次数7
第3次比较:d != c,比较次数8
第4次比较:b != a,比较次数9
第5次比较:d != d,比较次数10
移动主串的位置,从第三个字符开始匹配:
第1次比较:c != a,比较次数11
第2次比较:d != b,比较次数12
第3次比较:b != c,比较次数13
第4次比较:d != a,比较次数14
移动主串的位置,从第四个字符开始匹配:
第1次比较:b != a,比较次数15
第2次比较:d != b,比较次数16
移动主串的位置,从第五个字符开始匹配:
第1次比较:d != a,比较次数17
移动主串的位置,从第六个字符开始匹配:
第1次比较:a == a,比较次数18
第2次比较:b == b,比较次数19
第3次比较:c == c,比较次数20
第4次比较:a == a,比较次数21
第5次比较:d == d,比较次数22
匹配成功,子串出现在主串的第六个位置。
由于本次匹配的主串和子串长度分别为16和5,因此总共需要进行16-5+1=12次匹配,而每次匹配需要进行5次比较,因此总共需要进行12*5=60次比较。
阅读全文