mirror of
https://github.com/chefyuan/algorithm-base.git
synced 2025-08-04 06:51:34 +00:00
chefyuan
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
我们刚才说过了 BF 算法,但是 BF 算法是有缺陷的,比如我们下面这种情况
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
我们可以跳过其中某些步骤,直接到下面这个步骤。那我们是依据什么原则呢?
|
||||
|
||||

|
||||

|
||||
|
||||
### 坏字符规则
|
||||
|
||||
@@ -32,7 +32,7 @@ BM 算法是从后往前进行比较,此时我们发现比较的第一个字
|
||||
|
||||
那我们在模式串中找到坏字符该怎么办呢?
|
||||
|
||||

|
||||

|
||||
|
||||
此时我们的坏字符为 f ,我们在模式串中,查找发现含有坏字符 f,我们则需要移动模式串 T ,将模式串中的 f 和坏字符对齐。见下图。
|
||||
|
||||
@@ -74,7 +74,7 @@ BM 算法是从后往前进行比较,此时我们发现比较的第一个字
|
||||
|
||||
好后缀其实也很容易理解,我们之前说过 BM 算法是从右往左进行比较,下面我们来看下面这个例子。
|
||||
|
||||

|
||||

|
||||
|
||||
这里如果我们按照坏字符进行移动是不合理的,这时我们可以使用好后缀规则,那么什么是好后缀呢?
|
||||
|
||||
@@ -82,7 +82,7 @@ BM 算法是从右往左进行比较,发现坏字符的时候此时 cac 已
|
||||
|
||||
是不是感觉有点拗口,没关系,我们看下图,红色代表坏字符,绿色代表好后缀
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||
|
Reference in New Issue
Block a user