next数组模板 两种写法

Posted noobimp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了next数组模板 两种写法相关的知识,希望对你有一定的参考价值。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 int next[61]={0};
 6 //计算串str的next数组
 7 void getnext(char *str){
 8     int len=strlen(str);
 9     next[0]=next[1]=0;
10     for(int i=1;i<len;i++){
11         int j=next[i];
12         while(j&&str[i]!=str[j]) j=next[j];//一直回溯j直到str[i]==str[j]或j减小到0
13         next[i+1]=str[i]==str[j]?j+1:0;//更新next[i+1]
14     }
15 }
16 int main(){
17     char c[100]; cin>>c;
18     getnext(c);
19     for(int i=1;i<=strlen(c);i++){
20         cout<<next[i];
21     }
22     return 0;
23 }

 

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 int next[61]={0};
 6 //计算串str的next数组
 7 void getnext(char *str){
 8     int len=strlen(str);
 9     int j=0,k=-1;
10     next[0]=-1;
11     while(j<len){
12         if(k==-1||str[j]==str[k]) next[++j]=++k;
13         else k=next[k];
14     }
15 }
16 int main(){
17     char c[100]; cin>>c;
18     getnext(c);
19     for(int i=1;i<=strlen(c);i++){
20         cout<<next[i];
21     }
22     return 0;
23 }

 

以上是关于next数组模板 两种写法的主要内容,如果未能解决你的问题,请参考以下文章

如何将此 JavaScript 代码片段翻译成 Parenscript?

树状数组模板题:一本通1535

KMP算法模板

KMP算法的几种写法

Vue 注意事项 模板语法 单双向绑定 语法格式 MVVM框架 Object.defineProperty和数据代理操作

KMP入门 博客推荐+模板+入门习题