zoukankan      html  css  js  c++  java
  • KMP next表模板

     1 void makeNext(const char P[],int next[])
     2 {
     3     int q,k;//q:模版字符串下标;k:最大前后缀长度
     4     int m = strlen(P);//模版字符串长度
     5     next[0] = 0;//模版字符串的第一个字符的最大前后缀长度为0
     6     for (q = 1,k = 0; q < m; ++q)//for循环,从第二个字符开始,依次计算每一个字符对应的next值
     7     {
     8         while(k > 0 && P[q] != P[k])//递归的求出P[0]···P[q]的最大的相同的前后缀长度k
     9             k = next[k-1];          //不理解没关系看下面的分析,这个while循环是整段代码的精髓所在,确实不好理解  
    10         if (P[q] == P[k])//如果相等,那么最大相同前后缀长度加1
    11         {
    12             k++;
    13         }
    14         next[q] = k;
    15     }
    16 }
  • 相关阅读:
    MySQL-percona安装
    Oracle-19C PSU升级
    Oracle-内存管理机制
    学习进度第十二周
    十天冲刺10
    单词统计续
    十天冲刺9
    学习进度第十一周
    十天冲刺8
    十天冲刺7
  • 原文地址:https://www.cnblogs.com/Yumesenya/p/5187664.html
Copyright © 2011-2022 走看看