KMP算法

52 阅读1分钟

适用问题:

28. 实现 strStr() - 力扣(LeetCode)

459. 重复的子字符串 - 力扣(LeetCode)

难点:

  1. 理解前缀表中的数值代表着什么:代表有多大长度的相同前缀和后缀,如果下一位不匹配,就可以通过此值回退到没有重复匹配的那个字符下标,以此达到不重复匹配的目的。

  2. 如何计算前缀表:让j指向前缀末尾位置,i指向后缀末尾位置,两个字符作比较,不相等则通过前缀表回退(前缀表中的数值表示有多大长度的相同前缀和后缀,而前缀以下标0开头,这个长度刚好就是要回退的那个下标)

笔记:

image.png image.png