概念明确:被匹配串、匹配串。如从cbabce找ab,前者和后者分别称为被匹配串、匹配串。
最容易想到的方法:从首字母开始,逐个比较下去。一旦发现有不同的字符就停止并将这个匹配串后移一位,然后从头开始进行下一次比较。这样,就需要将字串中的所有字符一一比较。
KMP算法
Boyer-Moore算法
基于的事实:对于每一次失败的匹配尝试,跳过尽可能多的无法匹配的位置。
复杂度:O(n+k),且k越大(即搜索串)越长,速度越快,因为能跳过越多的无无法匹配的字符从而减少比较次数
概念明确:被匹配串、匹配串。如从cbabce找ab,前者和后者分别称为被匹配串、匹配串。
最容易想到的方法:从首字母开始,逐个比较下去。一旦发现有不同的字符就停止并将这个匹配串后移一位,然后从头开始进行下一次比较。这样,就需要将字串中的所有字符一一比较。
KMP算法
Boyer-Moore算法
基于的事实:对于每一次失败的匹配尝试,跳过尽可能多的无法匹配的位置。
复杂度:O(n+k),且k越大(即搜索串)越长,速度越快,因为能跳过越多的无无法匹配的字符从而减少比较次数