题目大意

如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置。

为了减少骗分的情况,接下来还要输出子串的前缀数组next

分析

好久没动到博客,因为中考。
但是中考结束了!!!
可以浪了,所以复习一下kmp,c++版
具体见dalao

ps:几个月没打到代码了,一起手尽不知道要干什么…

code

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<queue>
#include<string>using namespace std;char b[200000];
char a[2000000];
int p[2000000];int main()
{scanf("%s",a);scanf("%s",b);memset(p,0,sizeof(p));int j=-1;p[0]=-1;int lenb=strlen(b)-1;int lena=strlen(a)-1;for (int i=1;i<=lenb;i++){while ((j>-1) && (b[j+1]!=b[i])) j=p[j];if (b[j+1]==b[i]) j++;p[i]=j;}j=0;for (int i=0;i<=lena;i++){while ((j>-1) && (b[j+1]!=a[i]))j=p[j];if (b[j+1]==a[i]) j++;if (j==lenb)printf("%d\n",i+1-lenb);}for (int i=0;i<=lenb;i++){printf("%d ",p[i]+1);}
}

KMP字符串匹配 洛古3375 kmp水题相关推荐

  1. KMP算法小总结 洛谷P3375 【模板】KMP字符串匹配

    提问:这里有一个长度为n的字符串str1和长度为m的字符串str2(n > = m),问在str1中str2出现了几次? 如果使用暴力求解,一个一个比较,在n和m都极大的情况下将花费非常多的不必 ...

  2. 落谷 P3375 【模板】KMP字符串匹配

    题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next. 输入格式: 第一行为一个字符串,即为s1 ...

  3. Oulipo-欧力波(KMP字符串匹配问题)

    Oulipo-欧力波 HDU - 1686 The French author Georges Perec (1936–1982) once wrote a book, La disparition, ...

  4. Simpsons’ Hidden Talents辛普森一家的隐藏天赋(next数组和kmp字符串匹配)

    辛普森一家的隐藏天赋 HDU - 2594 目录 辛普森一家的隐藏天赋 HDU - 2594 题意描述:当给定字符串s1和s2时,找到s1中最长的前缀,即s2的后缀.如果有,输出相同的字符串即字符串长 ...

  5. KMP算法详解P3375 【模板】KMP字符串匹配题解

    KMP算法详解: KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt(雾)提出的. 对于字符串匹配问题(such as 问你在abababb中有多少个 ...

  6. 数据结构 kmp字符串匹配_用动画解释 KMP 算法

    大家好,我是一个每天在互联网都被读者催更催到爆肝,爆肾小鹿童鞋. 说实话,一些数据结构和算法我这辈子都不可能用到实际当中,但个人一直觉得能把复杂的东西讲明白是一件很牛逼的事情. 毕竟想牛逼也是很难的, ...

  7. 字符串匹配代码C语言,KMP算法(快速模式匹配算法)详解以及C语言实现

    通过上一节的介绍,学习了普通模式匹配算法,大体思路是:模式串从主串的第一个字符开始匹配,每匹配失败,主串中记录匹配进度的指针 i 都要进行 i-j+1 的回退操作(这个过程称为"指针回溯&q ...

  8. 【模板】KMP字符串匹配

    题目描述 给出两个字符串 s_1s1​ 和 s_2s2​,若 s_1s1​ 的区间 [l, r][l,r] 子串与 s_2s2​ 完全相同,则称 s_2s2​ 在 s_1s1​ 中出现了,其出现位置为 ...

  9. 洛谷 P3375 【模板】KMP字符串匹配

    我这段时间因为字符串太差而被关了起来了(昨晚打cf不会处理字符串现场找大佬模板瞎搞,差点就凉了),所以决定好好补一下字符串的知识QAQ,暂时先学习kmp算法吧~ 题目链接:https://www.lu ...

最新文章

  1. 提前了解客户背景很有必要
  2. EXP1 PC平台逆向破解
  3. 基于keepalived对redis做高可用配置---转载
  4. Merge Sort及其对一类问题的应用
  5. jvm内存参数配置_“步步精心”-常用JVM配置参数
  6. 认知:什么是真正的产品思维?
  7. JS定时器小应用--设置闹铃
  8. checkbox-复选框
  9. scala的静态属性和静态方法
  10. 计算机组成原理课后答案(唐朔飞第三版) 第三章
  11. qq西游服务器制作教程,QQ西游修罗版开区一键服务端+完整客户端+GM辅助工具+教程...
  12. 用C语言开发NES游戏(CC65) 准备工作
  13. 校内计算机无法报名高考,没有奖项可以报名自主招生吗?报考条件建议65问
  14. pandas算加权平均值_pandas和groupby:如何计算agg中的加权平均值
  15. C++ advanced(4)make function and SFINAE
  16. win11忘记当前密码怎么办
  17. vue 获取用户位置 高德_Vue使用高德地图
  18. chiplogic-网表提取-(2)二极管三极管电阻器件插入
  19. Servlet 03
  20. 笔记本英雄联盟界面服务器停止运行,关于LOL选完大区(主界面)后马上闪退的正确解决方法...

热门文章

  1. 7-47 抢红包 (25 分)
  2. 百度Ocr身份证识别
  3. 50年来,推动AI革命的背后8大统计学思想!
  4. 51单片机步进电机全套资料(启停+正反转+加减速+显示速度+中断)【源程序+流程图+接线图+视频+答辩报告】综合设计首选
  5. 愿你出走半生,归来仍是少年——2017年半年总结(上)
  6. AHP层次分析法python实现
  7. 【微信小程序】预览视频
  8. RecyclerView——自动滚动效果
  9. Hdu 5853 Jong Hyok and String
  10. FMCW雷达的时域信号