【KMP求字串第一個匹配位置】hdu 1711
Hdu 1711
求模式串第一次出現在目標串的位置
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>
#include<deque>
#include<map>
#include<algorithm>
using namespace std;
typedef long long LL;
//#pragma comment(linker, "/STACK:102400000,102400000")
/*
hdu 1711 KMP簡單題
求模式串第一次出現在目標串的位置
*/
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF=0x3f3f3f3f;
const int mod = 1e9+7;
const int N=1000010;
int a[N],p[N];
int net[N];
void getnext(int len)
{
net[0] = -1;
int k = -1;
for(int i = 1; i < len; i++)
{
while(k!=-1 && p[k+1]!=p[i])
k = net[k];
if(p[k+1]==p[i])
k++;
net[i] = k;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d%d",&n,&m);
for(int i = 0; i < n; i++)
scanf("%d",&a[i]);
for(int i = 0; i < m; i++)
scanf("%d",&p[i]);
getnext(m);
int id = -1, k = -1;
for(int i = 0; i < n; i++)
{
while(k!=-1 && p[k+1]!=a[i])
k = net[k];
if(p[k+1]==a[i])
k++;
if(k == m-1)
{
id = i;
break;
}
}
if(id==-1)
puts("-1");
else
printf("%d\n",id-m+2);
}
return 0;
}
相關文章
- 【KMP求字串匹配次數】 hdu 1686KMP字串匹配
- HDU 1711 Number Sequence(KMP)KMP
- 【字串匹配】KMP字串匹配KMP
- KMP字串模式匹配詳解KMP字串模式
- KMP字串匹配學習筆記KMP字串匹配筆記
- 字串匹配演算法:KMP字串匹配演算法KMP
- KMP字串匹配演算法KMP字串匹配演算法
- 字串匹配KMP演算法初探字串匹配KMP演算法
- KMP Algorithm 字串匹配演算法KMP小結KMPGo字串匹配演算法
- 字串匹配之KMP《演算法很美》字串匹配KMP演算法
- 字串匹配問題——KMP演算法字串匹配KMP演算法
- HDU 4668 Finding string (解析字串 + KMP)字串KMP
- kmp字串匹配,A星尋路演算法KMP字串匹配演算法
- 字串匹配基礎下——KMP 演算法字串匹配KMP演算法
- KMP字串匹配演算法 通俗理解KMP字串匹配演算法
- 快速字串匹配一: 看毛片演算法(KMP)字串匹配演算法KMP
- 匹配字串之——KMP演算法深入理解字串KMP演算法
- KMP字串匹配演算法理解(轉)KMP字串匹配演算法
- 第五章 字串專題 ---------------- 字串匹配(二)----KMP演算法字串匹配KMP演算法
- 【leetcode】28. Implement strStr() 字串匹配KMP BMLeetCode字串匹配KMP
- 字串匹配-BF演算法和KMP演算法字串匹配演算法KMP
- 字串匹配演算法(三)-KMP演算法字串匹配演算法KMP
- 神奇的字串匹配:擴充套件KMP演算法字串匹配套件KMP演算法
- LeetCode_0028. 找出字串第一個匹配項的下標,KMP演算法的實現LeetCode字串KMP演算法
- 字串匹配演算法之 BF 和 KMP 講解字串匹配演算法KMP
- HDU 2594 (KMP入門)KMP
- 圖解KMP字串匹配演算法+程式碼實現圖解KMP字串匹配演算法
- HDU 5469 Antonidas(樹上的字串匹配/搜尋)字串匹配
- 模式匹配-KMP演算法模式KMP演算法
- HDU5716 : 帶可選字元的多字串匹配字元字串匹配
- KMP模式匹配演算法KMP模式演算法
- 【KMP思想求迴圈節】hdu 1358 hust 1010 poj 2406KMP
- Laravel 路由匹配多個請求Laravel路由
- POJ--2406Power Strings+KMP求字串最小週期KMP字串
- 程式碼隨想錄演算法訓練營第9天 | 字串(KMP演算法) 28. 找出字串中第一個匹配項的下標 459.重複的子字串演算法字串KMP
- HDU 2203(KMP) 親和串KMP
- 字串匹配字串匹配
- 模式匹配kmp演算法(c++)模式KMP演算法C++