HDU 2594 (KMP入門)
關於學習KMP的姿勢,是通過這篇博文來的從頭到尾徹底理解KMP
文章寫得非常的詳細,所以我這個弱渣就沒必要再談一遍辣~~(>_<)~~
個人領悟的KMP就是保持主串不動,通過一個next陣列來移動匹配串,最終達到高效率匹配字元作用的一種演算法=。=
巨巨說KMP是純模板題。。。。。。
——————————————————————————————————————————————————————————————————————————————
這道題題意是說給你兩個字串,求兩個字串最長的相等前字尾(第一個字串求字首,第二個字串求字尾)。
程式碼如下:
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
#include <string>
typedef long long LL;
using namespace std;
int k_next[100000];
void kmp_next (string s)
{
int len = s.length();
k_next[0] = -1;
int k = -1; //前
int j = 0; //後
while (j < len)
{
if (k == -1 || s[k] == s[j])
{
k++;
j++;
k_next[j] = k;
}
else
{
k = k_next[k];
}
}
}
int main()
{
string s1, s2;
while (cin >> s1 >> s2)
{
memset(k_next, 0, sizeof(k_next));
string s3 = s1 + s2;
int flag, max;
max = INT_MIN;
kmp_next(s3);
int len = s3.length();
while (k_next[len] > s1.length() || k_next[len] >s2.length()) //如果超出範圍就找更小的匹配串
len = k_next[len];
len = k_next[len];
for (int i=0; i<len; i++)
cout << s3[i];
if (len)
cout << " ";
cout << len << endl;
s1.clear();
s2.clear();
}
}
相關文章
- HDU 1711 Number Sequence(KMP)KMP
- HDU 2203(KMP) 親和串KMP
- manacher || 擴充套件kmp -- Best Reward HDU - 3613套件KMP
- 【KMP求字串匹配次數】 hdu 1686KMP字串匹配
- HDU 4668 Finding string (解析字串 + KMP)字串KMP
- HDU 1754 I Hate It 線段樹入門
- 【KMP求字串第一個匹配位置】hdu 1711KMP字串
- HDU 1556 Color the ball 線段樹入門題
- hdu 3507 斜率優化DP入門題優化
- 簡單的揹包問題(入門)HDU2602 HDU2546 HDU1864
- HDU 1166 敵兵佈陣 線段樹入門題目
- 【KMP思想求迴圈節】hdu 1358 hust 1010 poj 2406KMP
- (hdu 1166)敵兵佈陣(線段樹入門,單點更新)
- KMPKMP
- hdu 1277 AC自動機入門(指標版和陣列版)指標陣列
- KMP模版KMP
- kmp——板子~~~KMP
- KMP模板KMP
- 入門入門入門 MySQL命名行MySql
- POJ 3461 kmpKMP
- KMP&exKMPKMP
- 【字串匹配】KMP字串匹配KMP
- 專題十六 KMP & 擴充套件KMP & Manacher【Kuangbin】KMP套件
- KMP Algorithm 字串匹配演算法KMP小結KMPGo字串匹配演算法
- 如何入CTF的“門”?——所謂入門就是入門
- 何入CTF的“門”?——所謂入門就是入門
- scala 從入門到入門+
- makefile從入門到入門
- ACM入門之新手入門ACM
- hihocoder 1015 KMP演算法 (KMP模板)KMP演算法
- JAVA KMP 純模板JavaKMP
- KMP演算法KMP演算法
- KMP 演算法KMP演算法
- KMP 自動機KMP
- 【小入門】react極簡入門React
- gRPC(二)入門:Protobuf入門RPC
- poj2594Treasure Exploration【最小路徑覆蓋+floyd傳遞閉包】
- 《Flutter 入門經典》之“Flutter 入門 ”Flutter