P3375 【模板】KMP字符串匹配

题目描述

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

为了减少骗分的情况,接下来还要输出子串的前缀数组next。如果你不知道这是什么意思也不要问,去百度搜[kmp算法]学习一下就知道了。

输入输出格式

输入格式:

第一行为一个字符串,即为s1(仅包含大写字母)

第二行为一个字符串,即为s2(仅包含大写字母)

 

输出格式:

若干行,每行包含一个整数,表示s2在s1中出现的位置

接下来1行,包括length(s2)个整数,表示前缀数组next[i]的值。

 

输入输出样例

输入样例#1:
ABABABC
ABA
输出样例#1:
1
3
0 0 1 

说明

时空限制:1000ms,128M

数据规模:

设s1长度为N,s2长度为M

对于30%的数据:N<=15,M<=5

对于70%的数据:N<=10000,M<=100

对于100%的数据:N<=1000000,M<=1000

样例说明:

所以两个匹配位置为1和3,输出1、3

代码输出:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

#include<iostream>
#include<cstdio>
#include<cstring>
#define Ll long long
using namespace std;
int p[1001];
char  s[1000005],ss[1000005];
int n,m;
void make()
{

    p[0]=-1;
    int j;
    for(int i=1;i<=m;i++)
    {
        j=p[i-1];
        while(j!=-1&&ss[i]!=ss[j+1])
            {
                j=p[j];
            }
        p[i]=++j;
    }
}
void find()
{
    int j=0;
    for(int i=1;i<=n;i++)
    {
        while(j!=-1&&s[i]!=ss[j+1])
        j=p[j];
        j++;
        if(j==m)printf("%d\n",i-m+1);
    }
}
int main()
{
    scanf("%s%s",s+1,ss+1);
    n=strlen(s+1);
    m=strlen(ss+1);
    make();
    find();
    for(int i=1;i<=m;i++)
    {
        printf("%d ",p[i]);
    }
}

转载于:https://www.cnblogs.com/suibingchen/p/6795258.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 原生文件下载

1.整个网页的html界面源码下载: xiazai.php <html> <head> <meta charset "utf-8"> <title></title> </head> <body> <form method"post" action"xiazai.php"> <input type"submit&quo…

asp 之 让实体中字段类型为DateTime的字段仅仅显示日期不显示时间

在我们平时的工作开发中。我们一般会遇到这种一个问题&#xff1a;某个实体的某个字段是DateTime类型的&#xff0c;但是我们在界面上仅仅想让它显示日期不显示时间&#xff01;一个订单实体&#xff1a;//订单类public class order{//订单IDpublic int id{get;set;}//物品IDpu…

Linux下配置LVM

1 LVM介绍LVM(Logical Volume Manager)逻辑卷管理&#xff0c;它是Linux环境下对磁盘分区进行管理的一种机制&#xff0c;LVM是建立在硬盘和分区之上的一个逻辑层&#xff0c;来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区&#xff0c;逻辑卷管理器的技术…

激光摄像机的原理及应用

近年来&#xff0c;在安防监控领域&#xff0c;以目前视频监控技术的发展情况&#xff0c;室内监控和白天正常环境下的监控已不是难题&#xff0c;但社会环境的发展日新月异&#xff0c;城市的发展、森林资源的不断流失、大型项目的建设、边防安全的守护等&#xff0c;这些环境…

Object.defineProperty 详解

最近想了解一下Vue是怎么实现数据双向绑定的&#xff0c;了解到是基于Object.definProperty,在此记录一下。 Object.defineProperty  顾名思义&#xff0c;就是给对象定义一个属性&#xff0c;总共有这么几种&#xff1a; value  属性的值writable  是否可改写&#xff0…

相机帧率和曝光时间的关系

文章转载自&#xff1a;http://blog.163.com/pluto_918/blog/static/203853902012111255634175/ 工业相机参数之帧率相关知识详解&#xff1a; 工业相机是机器视觉系统的重要组成部分之一&#xff0c;在机器视觉系统中有着非常重要的作用。工业相机已经被广泛应用于工业生产线…

SlickOne 敏捷开发框架介绍(二) -- 多用户/多租户/SAAS软件基础框架实现

前言&#xff1a;在应用于集团版客户或SAAS平台服务的业务系统中&#xff0c;流程管理系统需要支持多用户组织模型。其中包括角色数据、流程定义数据和流程实例数据的多用户标识绑定。本文旨在全面描述如何基于SlickOne敏捷开发框架实现上述基础服务功能&#xff0c;形成一个完…

工业相机行曝光与全局曝光

工业相机行曝光与全局曝光 逐行曝光&#xff1a; 图1 逐行曝光模式 逐行曝光sensor 实现如图1逐行曝光模式所示。与全局曝光不同&#xff0c;逐行曝光从第一行开始曝光&#xff0c;一个行周期之后第二行才开始曝光。依次类推&#xff0c;经过N-1 行后第N 行开始曝光。第一行曝光…

【Alpha阶段汇总】成果展示与体验总结

一、燃尽图 二、软件截图 三、代码与图片、音乐素材仓库 git仓库 四、问题与总结 1.git提交问题 之前创建的仓库地址是http://git.oschina.net/8265559926/groupnet14 但是无论怎么输入都说找不到仓库 经反复思考&#xff0c;感觉可能是因为地址不是纯字母的原因。就重新注册了…

JDBC批量操作性能提升

JDBC当使用INSERT INTO....VALUES()语句批量插入的时候&#xff0c;应该使用JDBC的PreparedStatement的批量操作方法&#xff0c;而不是採用一条一条运行的方法。比如&#xff08;来源&#xff1a;http://superjavason.iteye.com/blog/255423&#xff09;&#xff1a;如上图&am…

SVAC 2.0安全系统组成

SVAC2.0标准的一个很主要的特点就是视频安全和加密认证相比SVAC1.0更加规范&#xff0c;在视频安全方面更加重视。 通过信源层面的加密技术&#xff0c;实现端到端视频数据加密&#xff0c;构建更强大、更完整的视频安全体系。基于SVAC 2.0标准研究建立的安全系统&#xff08;…

【技术知识】SVAC 2.0安全技术浅析

2017-09-26 08:52 加密可以有效保护数据的机密性&#xff0c;防止非授权访问和非法监听。签名可以识别视音频的产生源以及所对应的视音频数据是否完整或被篡改。SVAC 2.0标准规定了加密和签名接口及数据格式&#xff0c;支持对数据的安全保护&#xff0c;以统一的语法格式支持…

别再管你的API叫微服务了

你有没有听过这句名言&#xff1a;“计算机科学领域只有两个难题&#xff0c;缓存失效和命名”&#xff1f;据说这句话是Phil Karlton在1996年或1997年左右说的。围绕这句格言确实出现了很多带有喜剧色彩的说法&#xff0c;它们也提到了其他的一些问题&#xff0c;但最近我对AP…

第一篇JavaScript基础

1.什么是JavaScript 2.核心语法&#xff0c;变量 先声明&#xff0c;再赋值 var i;i0; 同时声明并赋值变量 var x,y,z0; 不声明直接赋值u2&#xff08;变量可以不经过声明直接赋值&#xff0c;但是容易出错&#xff0c;这种方法不建议采纳&#xff09;3. 3.核心语法&#xff0…

透过迷雾不再迷茫 浅析海康威视透雾技术

频监控的需求主要分为两类&#xff0c;白天的需求和夜间的需求。夜间效果主要的提升之道以低照度和补光居多&#xff0c;也就造成了现在市面上白光补光、红外补光、激光补光等各式各样的摄像机盛行;非补光类的&#xff0c;当属星光级超级照度是为当下热门。而关于白天效果的提升…

抓包工具

前言&#xff1a; Charles是在 Mac 下常用的网络封包截取工具&#xff0c;在做移动开发时&#xff0c;我们为了调试与服务器端的网络通讯协议&#xff0c;常常需要截取网络封包来分析。 一、主界面介绍 二、网页抓包 启动 Charles 后&#xff0c;需要将 Charles 设置成系统代理…

详解Session分布式共享(.NET CORE版)

一、前言&回顾 在上篇文章Session分布式共享 Session Redis Nginx中&#xff0c;好多同学留言问了我好多问题&#xff0c;其中印象深刻的有&#xff1a;nginx挂了怎么办&#xff1f;采用Redis的Session方案与微软Session方案相比&#xff0c;有什么优势呢&#xff1f;Co…

浅析透雾监控镜头的四大透雾技术

透雾摄像机在雾天中的作用毋容置疑&#xff0c;YAMAKO透雾镜头早已获得用户的认可&#xff0c;如今&#xff0c;高清透雾摄像机的问世&#xff0c;很大程度上得益于透雾高清电动镜头&#xff0c;但摄像机本身的透雾原理也在近端时间获得极大的进步。 透雾技术主要分为四种&…

外网访问原理分析

本节我们会将上节创建的 ext_net 连接到 router&#xff0c;并验证内外网的连通性。 更重要的&#xff0c;我们会分析隐藏在表象之下的原理。 将外网连接到 Neutron 的虚拟路由器&#xff0c;这样 instance 才能访问外网。 点击菜单 Project -> Network -> Routers 进入 …