python蓝桥杯备赛(day8)[KMP算法]

第四章 字符串part02  [KMP算法]

今日任务

  • 28. 实现 strStr()

题目链接:28. 找出字符串中第一个匹配项的下标 - 力扣(LeetCode)

文章链接:代码随想录

这题要用kmp算法,一下是我认为搞清楚kmp需要知道的

前缀表是什么:记录下标i之前(包括i)的字符串(即子串)中,最大长度相同前缀后缀

前缀表有什么作用:前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配

最长相同前后缀(文章有)

前缀表里重新开始匹配的位置是怎么找的(文章里有)

为什么使用前缀表可以告诉我们匹配失败之后跳到哪里重新匹配:key

下标5之前这部分的字符串(也就是字符串aabaa)的最长相等的前缀 和 后缀字符串是 子字符串aa ,因为找到了最长相等的前缀和后缀,匹配失败的位置是后缀子串的后面,那么我们找到与其相同的前缀的后面重新匹配就可以了。所以前缀表具有告诉我们当前位置匹配失败,跳到之前已经匹配过的地方的能力。

构造next数组其实就是计算模式串s,前缀表的过程。 (文章内有)

你可能感兴趣的:(蓝桥杯,职场和发展)