日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P3375 【模板】KMP字符串匹配 (KMP模板)

發(fā)布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P3375 【模板】KMP字符串匹配 (KMP模板) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目描述

如題,給出兩個字符串s1和s2,其中s2為s1的子串,求出s2在s1中所有出現(xiàn)的位置。

為了減少騙分的情況,接下來還要輸出子串的前綴數(shù)組next。

(如果你不知道這是什么意思也不要問,去百度搜[kmp算法]學(xué)習(xí)一下就知道了。)

輸入輸出格式

輸入格式:
第一行為一個字符串,即為s1

第二行為一個字符串,即為s2

輸出格式:
若干行,每行包含一個整數(shù),表示s2在s1中出現(xiàn)的位置

接下來1行,包括length(s2)個整數(shù),表示前綴數(shù)組next[i]的值。

輸入輸出樣例

輸入樣例#1:
ABABABC
ABA
輸出樣例#1:
1
3
0 0 1
說明

時空限制:1000ms,128M

數(shù)據(jù)規(guī)模:

設(shè)s1長度為N,s2長度為M

對于30%的數(shù)據(jù):N<=15,M<=5

對于70%的數(shù)據(jù):N<=10000,M<=100

對于100%的數(shù)據(jù):N<=1000000,M<=1000000

思路:直接把s1接在s2后面進行KMP,枚舉所有點若next[i]==s2.len則i是一個答案。
注意:串接時記得中間加一個符號防止影響結(jié)果(仔細想想)

代碼注釋:
1.字符串都以第0個開始
2.我這里的next[i]表示i點前面(不包含i)最長的前綴和后綴相同的字符串如:”abcabc”中 s[3]=’a’,next[3]=0,s[4]=’b’,next[4]=1(‘a(chǎn)’),s[5]=’c’,next[5]=2(“ab”)。
3.不明白KMP的可以嘗試根據(jù)代碼手算個數(shù)據(jù)體會一下(最好是畫線段或矩形分情況思考一下),我不具體寫了。

code1:

//By Menteur_Hxy #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std;const int MAX=100005; int next[MAX]; char s[MAX],a[MAX];int main() {scanf("%s",s+1);getchar();int len1=strlen(s+1);scanf("%s",a+1);int len2=strlen(a+1);int len=len2;a[++len]='*';for(int i=1;i<=len1;i++) a[++len]=s[i];for(int i=2,j=0;i<=len;i++) {while(j && a[i]!=a[j+1]) j=next[j];if(a[i]==a[j+1]) j++;next[i]=j;}for(int i=1;i<=len;i++) if(next[i]==len2) printf("%d\n",i-2*len2);for(int i=1;i<=len2;i++) printf("%d ",next[i]);return 0; }

code2:

//By Menteur_Hxy #include<cstdio> #include<iostream> #include<cstdlib> #include<algorithm> #include<cstring> #include<cmath> #include<ctime> using namespace std;const int MAX=1000005; int next[MAX<<1]; string s1,s2;int main() {cin>>s1;getchar();cin>>s2;int len1=s1.length();int len2=s2.length();int len3=len1+len2+1;s2+='#'+s1;//'#'即隔離符號next[0]=-1;int k=-1,j=0;while(j < len3) {if(k==-1 || s2[j]==s2[k]){//若k位于字符串首前或s[k]==s[j]顯然有k++,j++;next[j]=k;}else k=next[k];//向前尋找一個小一點的但又可能滿足條件的最大的}for(int i=0;i<len3;i++) if(next[i]==len2) printf("%d\n",i-len2*2);for(int i=0;i<len2;i++) printf("%d ",next[i+1]);return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/Menteur-Hxy/p/9248018.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的P3375 【模板】KMP字符串匹配 (KMP模板)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费观看日韩av | www国产黄色 | 亚洲人人干 | 色爽av | 亚洲码无人客一区二区三区 | 91视频免费在观看 | www夜片内射视频日韩精品成人 | a级在线免费观看 | 欧美另类v | 四虎影院在线免费播放 | 在线永久看片免费的视频 | www.国产免费 | 日本成人激情视频 | 三上悠亚人妻中文字幕在线 | 91视频啊啊啊 | 国产成人精品一区 | www日韩在线| 久久中文字幕一区二区 | 亚洲视频在线免费播放 | 婷婷综合亚洲 | 麻豆免费在线 | 夜夜狠 | 亚洲欧美日韩第一页 | 亚洲精品国产一区二区 | 4438亚洲| 欧美极品第一页 | 宅男av在线| 亚洲性猛交| 热99视频| 欧美国产日本在线 | 久久综合伊人77777蜜臀 | 欧美极品在线视频 | 日韩成人一区二区三区 | 亚洲在线看 | 日韩av一区二区三区在线观看 | 亚洲成人免费电影 | 色人阁五月天 | 中文字幕9 | av免费在线观看网址 | 91视频在线观看 | 黄色网页在线播放 | 亚洲成人免费在线 | 午夜影院久久久 | 亚洲国产第一页 | 国产精品视频区 | 妺妺窝人体色www聚色窝仙踪 | 99伊人网| 亚洲国产精品狼友在线观看 | 求毛片网站 | 久久99精品久久只有精品 | 亚洲欧美日本韩国 | 亚洲夜夜爽 | 女人床技48动态图 | 黑人巨大精品 | 日色视频 | 成人三级视频 | av字幕在线 | 最新中文字幕免费 | 好屌妞视频这里有精品 | 麻豆视频免费入口 | 69福利视频| 国产高潮失禁喷水爽到抽搐 | 视频免费在线观看 | 18禁男女爽爽爽午夜网站免费 | 欧美在线播放一区 | 日韩bbw| 欧洲熟妇的性久久久久久 | 亚洲男女在线 | 免费久草视频 | av视 | 午夜欧美精品 | av网站入口 | 日日射视频 | 久久无码人妻丰满熟妇区毛片 | 成人黄色在线观看视频 | 最近日本中文字幕 | 中文字幕av无码一区二区三区 | 午夜视频黄 | 欧美人与禽zozzo禽性配 | 亚洲色图1 | 日韩一区二区在线视频 | 综合亚洲欧美 | 一区在线观看视频 | 日韩少妇内射免费播放18禁裸乳 | 免费看的黄色 | 亚洲一区二区偷拍 | 神马午夜91 | 精品动漫一区二区三区在线观看 | 波多野结衣久久精品 | 一区二区在线观看免费 | 冲田杏梨一区二区三区 | 欧美天堂久久 | 午夜少妇久久久久久久久 | 正在播放经典国语对白 | 亚洲婷婷久久综合 | 精品久久久蜜桃 | 少妇被狂c下部羞羞漫画 | 国产嫩草影视 | 91岛国 |