KMP算法图文详解(为什么是next[0]= |
您所在的位置:网站首页 › 代码j是什么意思 › KMP算法图文详解(为什么是next[0]= |
文章目录
一: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 |