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.pswp.cn/news/252779.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252779.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252779.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[譯] 用 Shadow DOM v1 和 Custom Elements v1 實現一個原生 Web Component

原文地址&#xff1a;Make a Native Web Component with Custom Elements v1 and Shadow DOM v1原文作者&#xff1a;Pearl Latteier譯文出自&#xff1a;掘金翻譯計劃本文永久鏈接&#xff1a;github.com/xitu/gold-m…譯者&#xff1a;newraina校對者&#xff1a;CoderMing假…

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…

紅外線攝像機的選擇與使用及原理

紅外線攝像機的選擇與使用及原理 用戶使用紅外燈首先要仔細閱讀使用說明書&#xff0c;特別是為保證人身設備安全的注意事項。檢查前面所講述的配套性方面是否達到要求&#xff0c;應考慮到的影響因素是否考慮到&#xff0c;如未達到要求&#xff0c;可及時調整所用器材。 紅…

asp 之 讓實體中字段類型為DateTime的字段僅僅顯示日期不顯示時間

在我們平時的工作開發中。我們一般會遇到這種一個問題&#xff1a;某個實體的某個字段是DateTime類型的&#xff0c;但是我們在界面上僅僅想讓它顯示日期不顯示時間&#xff01;一個訂單實體&#xff1a;//訂單類public class order{//訂單IDpublic int id{get;set;}//物品IDpu…

JQ的異步文件上傳

一,view代碼 <form role"form"><div class"form-group"><label for"keyinput">選擇文件&#xff1a;</label><input type"file" name"upfile" id"upfile" /></div><div c…

紅外成像與微光成像的區別

在現有的安防技術中,微光和紅外成像是運用最廣的夜視技術.而微光成像主要運用在反恐偵查,部隊作戰的夜視儀中、而紅外夜視成像主要用于監控攝像機的夜間監控較多.   微光成像技術微光夜視技術又稱像增強技術&#xff0c;是通過帶像增強管的夜視鏡&#xff0c;對夜天光照亮的微…

實體類和數據表的映射異常(XXX is not mapping[ ])

在使用SSH框架開發過程&#xff0c;使用hibernate框架提供的工具類實現與數據庫數據交互&#xff0c;在執行cmd操作時&#xff0c;如果出現以下異常&#xff1a; org.hibernate.hql.ast.QuerySyntaxException: xxx is not mapped [from xxx] 或者 nested exception is org.hibe…

Linux下配置LVM

1 LVM介紹LVM(Logical Volume Manager)邏輯卷管理&#xff0c;它是Linux環境下對磁盤分區進行管理的一種機制&#xff0c;LVM是建立在硬盤和分區之上的一個邏輯層&#xff0c;來提高磁盤分區管理的靈活性。通過LVM系統管理員可以輕松管理磁盤分區&#xff0c;邏輯卷管理器的技術…

Python3 配置文件(configparser)(轉載)

本文由 Luzhuo 編寫,轉發請保留該信息. 原文: http://blog.csdn.net/rozol/article/details/72793304 以下代碼以Python3.6.1為例 Less is more! configparser 可以讀寫和解析注釋文件, 但是沒有寫入注釋的功能 1 #!/usr/bin/env python2 # codingutf-83 __author__ Luzhuo4 _…

激光攝像機的原理及應用

近年來&#xff0c;在安防監控領域&#xff0c;以目前視頻監控技術的發展情況&#xff0c;室內監控和白天正常環境下的監控已不是難題&#xff0c;但社會環境的發展日新月異&#xff0c;城市的發展、森林資源的不斷流失、大型項目的建設、邊防安全的守護等&#xff0c;這些環境…

Object.defineProperty 詳解

最近想了解一下Vue是怎么實現數據雙向綁定的&#xff0c;了解到是基于Object.definProperty,在此記錄一下。 Object.defineProperty  顧名思義&#xff0c;就是給對象定義一個屬性&#xff0c;總共有這么幾種&#xff1a; value  屬性的值writable  是否可改寫&#xff0…

Java 實現排序

public class Sort {public static void main(String[] args) {int data[] {43,54,123,5,98,10,7,74,5,54};System.out.println("原先數組&#xff1a;");for(int d : data) {System.out.print(d " ");}System.out.println("\n");/*System.ou…

相機幀率和曝光時間的關系

文章轉載自&#xff1a;http://blog.163.com/pluto_918/blog/static/203853902012111255634175/ 工業相機參數之幀率相關知識詳解&#xff1a; 工業相機是機器視覺系統的重要組成部分之一&#xff0c;在機器視覺系統中有著非常重要的作用。工業相機已經被廣泛應用于工業生產線…

班長的選舉

/* Note:Your choice is C IDE */ #include "stdio.h" #include "string.h" void main() {int zs,ls,ww,zl;//定義一個給參選人員的票數int max;//int xuhao;//char name[5];//參選人員的名字zslswwzl0;//初始票數都為0printf("候選人名單如下\n"…

jquery刷新頁面

window.location.reload()刷新當前頁面. parent.location.reload()刷新父親對象&#xff08;用于框架&#xff09; opener.location.reload()刷新父窗口對象&#xff08;用于單開窗口&#xff09; top.location.reload()刷新最頂端對象&#xff08;用于多開窗口&#xff09; 轉…

Python 常量

總結&#xff1a;在Python中實際中沒有嚴格的常量&#xff1b;知識程序員中約定俗成用變量名全部大寫代表常量 常量的定義&#xff1a; 常量即指不變的量&#xff0c;如pai 3.141592653..., 或在程序運行過程中不會改變的量 舉例&#xff0c;假如老男孩老師的年齡會變&#xff…

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;感覺可能是因為地址不是純字母的原因。就重新注冊了…

Accusoft結構化工具包FormSuite for Structured Forms常見問題解答(二)

FormSuite for Structured Forms是結構化的表單處理SDK和字符識別工具套包&#xff0c;包括表單處理工具FormFix和字符識別工具SmartZone。所有表格處理控件被設計為可以通過內存到內存的數據傳輸模式進行相互溝通。本文收集了一些FormSuite for Structured Forms常見問題及解答…