[kuangbin帶你飛]專題十六 KMP & 擴充套件KMP & Manacher - I - Simpsons’ Hidden Talents
題目大意
找s1最長字首等於s2的字尾。
思路
連線s1,s2,利用失敗函式next從k=next[plen],依次k=next[k],知道k同時小於等於s1,s2的長度。
AC程式碼
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN = 100002;
int NEXT[MAXN];
string P;
string T;
int plen;
int tlen;
void getNEXT(){
int k,j;
k = -1;j = 0;NEXT[0] = -1;
while(j<plen){
if(k==-1||P[k] == P[j]){
NEXT[++j] = ++k;
}else{
k=NEXT[k];
}
}
}
int main(){
ios::sync_with_stdio(false);
string s1;
string s2;
int lenS2;
int lenS1;
while(cin>>s1){
cin>>s2;
lenS2 = s2.length();
lenS1 = s1.length();
P = s1 + s2;
plen = P.length();
getNEXT();
// cout<<"檢視next"<<endl;
// for(int i = 0 ;i<plen;i++){
// cout<<NEXT[i]<<" ";
// }
// cout<<endl;
int k = plen;
while(k>lenS1||k>lenS2){
k = NEXT[k];
}
if(k!=0){
cout<<s1.substr(0,k)<<" "<<k<<"\n";
}else{
cout<<k<<"\n";
}
}
return 0;
}
相關文章
- 專題十六 KMP & 擴充套件KMP & Manacher【Kuangbin】KMP套件
- manacher || 擴充套件kmp -- Best Reward HDU - 3613套件KMP
- Z 函式(擴充套件KMP)函式套件KMP
- 神奇的字串匹配:擴充套件KMP演算法字串匹配套件KMP演算法
- [kuangbin帶你飛]專題五 並查集 題解並查集
- P5410 【模板】擴充套件 KMP(Z 函式)套件KMP函式
- KMP, Manacher, SA 存在的意義KMP
- 字串學習總結(Hash & Manacher & KMP)字串KMP
- Manacher演算法、KMP演算法演算法KMP
- “KMP、EXKMP、manacher、最小表示法”大雜燴KMP
- KMPKMP
- [kuangbin帶你飛]專題十二 基礎DP1 D - Doing Homework HDU - 1074
- 自由擴充套件你的專案——Builder模式套件UI模式
- KMP模版KMP
- kmp——板子~~~KMP
- KMP模板KMP
- Swift學習筆記(二十六)——擴充套件Swift筆記套件
- 擴充套件你的KUBECTL功能套件
- 擴充套件你的STRUTS (轉)套件
- POJ 3461 kmpKMP
- KMP&exKMPKMP
- 【字串匹配】KMP字串匹配KMP
- KMP Algorithm 字串匹配演算法KMP小結KMPGo字串匹配演算法
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- Chrome瀏覽器擴充套件開發系列之十六:擴充套件中可用的Chrome瀏覽器APIChrome瀏覽器套件API
- 字串匹配問題——KMP演算法字串匹配KMP演算法
- hihocoder 1015 KMP演算法 (KMP模板)KMP演算法
- KMP 自動機KMP
- JAVA KMP 純模板JavaKMP
- KMP演算法KMP演算法
- KMP 演算法KMP演算法
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 第五章 字串專題 ---------------- 字串匹配(二)----KMP演算法字串匹配KMP演算法
- 關於Interceptor擴充套件問題套件
- etcd管理,證書配置,擴充套件,遷移恢復,帶證書擴充套件節點套件
- [譯] 9 個 VSCode 擴充套件,讓你的程式碼敲的飛起?VSCode套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- Sanic 擴充套件套件