首页 > 其他分享 >数据结构(五)kmp---以题为例

数据结构(五)kmp---以题为例

时间:2024-03-17 23:11:41浏览次数:27  
标签:下标 int 样例 --- kmp 字符串 数据结构 输入

给定一个字符串 S,以及一个模式串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。

模式串 P 在字符串 S 中多次作为子串出现。

求出模式串 P 在字符串 S 中所有出现的位置的起始下标。

输入格式

第一行输入整数 N,表示字符串 P 的长度。

第二行输入字符串 P。

第三行输入整数 M,表示字符串 S 的长度。

第四行输入字符串 S。

输出格式

共一行,输出所有出现位置的起始下标(下标从 00 开始计数),整数之间用空格隔开。

数据范围

1≤N≤105
1≤M≤106

输入样例:

3
aba
5
ababa

输出样例:

0 2
#include<iostream>
using namespace std;
const int  N =100010,M =1000010;
int m,n;
int ne[N];
char s[M],p[N];

int main(){
    cin>>n>>p+1>>m>>s+1;
    for(int i =2,j=0;i<=n;i++){
        while(j&&p[i]!=p[j+1]) j=ne[j];
        if(p[i]==p[j+1]) j++;
        ne[i]=j;
    }
    
    for(int i =1,j=0;i<=m;i++){
        while(j&&s[i]!=p[j+1]) j=ne[j];
        if(s[i]==p[j+1]) j++;
        if(j==n){
            cout<<i-n<<" ";
            j=ne[j];
        }
    }
    return 0;
    
}

 

标签:下标,int,样例,---,kmp,字符串,数据结构,输入
From: https://www.cnblogs.com/Ghost-Knight/p/18079405

相关文章

  • 可编辑表格中的两个列分别是用react-hook-form 和antd的inputNumber实现的,需要在开始
    可编辑表格中的两个列分别是用react-hook-form和antd的inputNumber实现的,需要在开始时间的列输入后失焦时,或者按enter键,鼠标聚焦到下一列,即结束时间,该如何设置在React项目中,要实现在一个可编辑表格中,当开始时间列输入后失焦或按下Enter键时,自动将焦点切换至结束时间列,你可以结合......
  • [转]【Qt-license】误操作qt下载导致只能安装商业版试用十天,无法安装社区版
    背景:原本是为了学习qml,需要下载一个designstudio,而这个需要比较新版的安装程序,但新版的安装程序官方都是online安装。于是从官网找下载链接。毕竟是英文的,又心急,误打误撞中我选择了商业版试用。  其实online安装程序是一样的(qt-unified-windows-x64-4.6.1-online.exe),一旦选......
  • 零门槛打造个人图床:感谢Telegraph-Image
    零门槛打造个人图床:感谢Telegraph-Image更好的阅读体验?幕前小话很早之前,我就用GitHub和Cloudflare搭建了自己的图床,不过没多久就发现cf自带的dev域名被墙了,于是就没再管它。直到上周,我在课上无聊时用手机随便翻了翻后台,没想到竟然又能打开了!并且后台多出了200多张网友......
  • FastJson反序列化1-FastJson基础使用及反序列化流程分析
    1、FastJson简介及使用fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。1.1序列化JavaBean;假设现在程序中有一个类User,基本信息如下(省略构造方法及getset方法):packageorg.exampl......
  • 中考英语首字母快速突破009-2021上海闵行英语二模-Preventing and Managing Stomach F
    PDF格式公众号回复关键字:ZKSZM009原文​Stomachfluisacommondisease.Itspreadseasily,whichmakesithardtoavoid.That'se(71)trueifsomeoneinyourfamilyhasit.Stomachfluiscausedbyavirus,butnotthesameonethatcausesregular......
  • cfRound933div3-E题解
    E-RudolfandkBridges题意:选择的桥在连续的行中,每个桥的支架安装位置是可以不一样的.做法:赛时也感觉也感觉是dp,但是害怕dp,就选择了逃避.往贪心方向想,认为每次到了每个跳板都要跳到最远距离,实际上这样是不行的.很明显,可能存在近一点的点花费更少。实际上是dp,而且也不......
  • 十大知识领域第一课 - 整合管理
    项目整合管理首先了解一下项目管理中的十大知识领域和五大过程组整合管理便是十大知识领域中的NO1,也是学习十大知识领域的开端。另外,我们需要知道整合管理的七大过程分别由哪些过程组来完成的:由图可知,1-启动,2-规划,34-执行,56-监控,7-收尾。接下来,我们便依次介绍这整合管......
  • chapter12-2-背包问题
    动态规划最经典并且在机试中重点考查的问题——背包问题。背包问题的变体繁多,这里主要讨论3种。1.0-1背包0-1背包问题描述的是,有\(n\)件物品,每件物品的重量为\(w[i]\),其价值为\(v[i]\),现在有容量为\(m\)的背包,如何选择物品使得装入背包物品的价值最大。首先介绍求解这个问题的......
  • 鸿蒙Next-Scroll滚动-控横向滚动
    @Entry@ComponentstructScrollerCase02{@Statemessage:string='HelloWorld';scroller:Scroller=newScroller()//在组件中声明一个scroller的实例build(){Row(){Column(){//只能有一个组件Scroll(this.scroller){//......
  • 鸿蒙Next-Scroll滚动-控制纵向滚动
    出现滚动的前提条件,当子组件内容超过父组件的宽度或者高度4.0文档 文档中心build(){Column(){Row(){Text('顶部').textAlign(TextAlign.Center).width('100%')}.width('100%').height(50).b......