nxt数组下标从1开始而a,b数组下标从0开始。

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int lena, lenb, nxt[1000005];
char a[1000005], b[1000005];
void mknxt(){
int j=0, k;
k = nxt[0] = -1;
while(j<lenb){
if(k==-1 || b[j]==b[k]) nxt[++j] = ++k;
else k = nxt[k];
}
}
void kmp(){
int i=0, j=0;
while(i<lena){
if(j==-1 || a[i]==b[j]) i++, j++;
else j = nxt[j];
if(j==lenb) printf("%d\n", i-j+1), j = nxt[j];
}
}
int main(){
scanf("%s %s", a, b);
lena = strlen(a);
lenb = strlen(b);
mknxt();
kmp();
for(int i=1; i<=lenb; i++) printf("%d ", nxt[i]);
return 0;
}

最新文章

  1. 学习Google Protocol buffer之概述
  2. zjuoj 3606 Lazy Salesgirl
  3. IOS 沙盒机制 浅析
  4. Android 给ListView设置Adapter
  5. angular 指令 要点解析
  6. 升级10.11后使用CocoaPod出现-bash: pod: command not found 解决办法-备
  7. 为什么要用BASE64
  8. cocos2d之Box2D详细说明 鼠标联合实现
  9. UVA - 10635 最长公共子序列
  10. JS清除dropdownlist绑定的项,并添加新项
  11. Linux日志分析ELK环境搭建
  12. golang验证提交的数据中某个字段是否重复
  13. DDD - 概述 - 聚合 (三)
  14. 关于使用python ~取反操作符带出的一系列问题
  15. 基于SSM的CRUD项目的详解
  16. [Postman]查找替换(5)
  17. Microsoft SQL Server sa 账户 登录错误18456
  18. PHP二维数组(或任意维数组)转换成一维数组的方法汇总(实用)
  19. yolo检测系列
  20. ER模型试题

热门文章

  1. Javascript Number
  2. 微信小程序:从本地相册选择图片或使用相机拍照。
  3. ASP.NET MVC中使用窗体验证出现上下文的模型在数据库创建后发生更改,导致调试失败(一)
  4. bt5 r3下metasploit连接postgresql数据库
  5. 飞塔NGFW-FortiGate-5.2(BYOL)
  6. 如何在Ubuntu server中修改IP
  7. 网页编辑器CKEditor4.3.1+CKFinder2.4+JW Player6.7(视频播放器)集成
  8. Spark性能优化——和shuffle搏斗
  9. 【BZOJ3940】[USACO2015 Feb] Censoring (AC自动机的小应用)
  10. 父子组件通信(vuex的方式)