补充 kmp算法

  1. kmp算法是基最长的前后缀和
  2. 我们把模式串和查找串放在一起,如果他们前后缀长度等于模式串,说明我们找到对应的位置
  3. 假设现在遍历到第i 个节点,前一个节点的前后缀长度是p[i-1]
  4. 如果s[i]==s[p[i-1]] 说明可以延续之前的最长p[i]=p[i-1]+1
  5. 如果不等于,我们可以以前一个节点结尾的第二个最长的前后缀长度,也就是 p[p[i-1]-1]
  6. 因为可以确定的是 s[0:p[i-1]-1]的长度是之前相等的前缀,我们想找的第二长的前后缀长度就是字符串s[0:p[i-1]-1]的最长前后缀长度
  7. 注意这里字符串的表示方法两边都能取到
  8. 不断循环找到最长的前后缀长度

我们找的前后缀长度不包括自身,也就是一个字母的最长前后缀长度是 0

  • 这样我们初始比较可以和第一个进行比较(也就是索引 0 的节点 此时p[i-1]=0)
全部评论

相关推荐

11-13 10:17
门头沟学院 Java
昨天面美团,jvm,juc问的好深啊,感觉小林coding不太够喔,牛油们有没有什么推荐的八股网站嘛🕒 岗位/面试时间👥 面试题目🤔 面试感受
明天不下雨了:小林Coding:https://xiaolincoding.com/ 全栈哥:https://www.pdai.tech/ Guide哥:https://javaguide.cn/ 秀哥:https://interviewguide.cn/ 沉默王二:https://javabetter.cn/home.html 磊哥:https://www.javacn.site/interview/basic/ 小傅哥:https://bugstack.cn/ 源码哥:https://doocs.github.io/source-code-hunter/#/ 各大厂的公众号技术文章和一些经典的书籍
面试太紧张了怎么办?
点赞 评论 收藏
分享
11-15 13:12
已编辑
门头沟学院 Java
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务