update kmp comment

This commit is contained in:
ehlxr 2022-06-16 23:20:12 +08:00
parent fe1d9d913c
commit e298c3a1a5
2 changed files with 10 additions and 5 deletions

3
.gitignore vendored
View File

@ -12,4 +12,5 @@ target
/useful-code.iml
/.idea
/resources/debug.log
*.iml
*.iml
budd-common/.settings

View File

@ -83,15 +83,19 @@ public class Kmp {
next[0] = 0;
int k = 0; // 表示前后缀相匹配的最大长度
// 根据已知 next 数组的前 i-1 位推测第 i
for (int i = 1; i < m; ++i) {
// k b[0, i-1] 子串最大匹配前后缀长度
// b[0, k] b[0, i-1] 子串最大匹配前缀子串
while (k != 0 && b[k] != b[i]) {
// b[k] != b[i]则求 b[0, i] 子串最大匹配前后缀长度问题转换成了求 b[0, k] 子串最大匹配前后缀长度问题
// k b[0, i) 子串最大匹配前后缀长度
// b[0, k) b[0, i) 子串最大匹配前缀子串
// 1b[k] != b[i]则求 b[0, i] 子串最大匹配前后缀长度问题
// 转换成了求 b[0, k) 子串最大匹配前后缀长度问题
// 循环直到 b[k] == b[i] (下一步处理) k == 0
k = next[k];
}
// 2b[k] == b[i] b[0, i] 子串最大匹配前后缀长度为 k + 1
if (b[k] == b[i]) {
// b[k] == b[i] b[0, i] 子串最大匹配前后缀长度为 k + 1
++k;
}
next[i] = k;