KMP算法图文详解(为什么是next[0]=

您所在的位置:网站首页 代码j是什么意思 KMP算法图文详解(为什么是next[0]=

KMP算法图文详解(为什么是next[0]=

2024-07-02 10:17| 来源: 网络整理| 查看: 265

文章目录 一:KMP算法解决的问题二:详解KMP(1)暴力匹配的缺点(2)最长相同前缀和后缀(3)究竟怎么回溯(3)next数组(4)求解next数组A:next[0]=-1B:next[j]=kC:k=next[k] (5)KMP算法代码

一:KMP算法解决的问题

如下有两个字符串,问你:如何快速在主串中找到目标串? 在这里插入图片描述

相信大家想到的第一个解决方法就是暴力破解——用两个指针,开始时分别指向两个串的开头,然后比较,如果相同继续扫描下一个字符,一旦出现不相同,两个指针进行回溯,主串的指针回溯到下一位,目标串的指针回溯至第一位,然后继续按照上述步骤比较,如下图

-注意:回溯的步骤在图中表示为了目标串向后移动的,但是实际物理内存中字符串是不可能移动的,这里只是为了形象解释 在这里插入图片描述 由此,你可以轻松写出对应代码

int index(string main_str,string aim_str) { int i=0; int j=0;//i和j分别用来扫描主串和目标串 while(i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3