【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;
}
相關文章
- HDU 1711 Number Sequence(KMP)KMP
- 【字串匹配】KMP字串匹配KMP
- KMP字串模式匹配詳解KMP字串模式
- KMP字串匹配演算法KMP字串匹配演算法
- 字串匹配演算法:KMP字串匹配演算法KMP
- KMP字串匹配學習筆記KMP字串匹配筆記
- 字串匹配問題——KMP演算法字串匹配KMP演算法
- 字串匹配之KMP《演算法很美》字串匹配KMP演算法
- 字串匹配基礎下——KMP 演算法字串匹配KMP演算法
- kmp字串匹配,A星尋路演算法KMP字串匹配演算法
- 【leetcode】28. Implement strStr() 字串匹配KMP BMLeetCode字串匹配KMP
- LeetCode_0028. 找出字串第一個匹配項的下標,KMP演算法的實現LeetCode字串KMP演算法
- 匹配字串之——KMP演算法深入理解字串KMP演算法
- 快速字串匹配一: 看毛片演算法(KMP)字串匹配演算法KMP
- 第五章 字串專題 ---------------- 字串匹配(二)----KMP演算法字串匹配KMP演算法
- 神奇的字串匹配:擴充套件KMP演算法字串匹配套件KMP演算法
- 字串匹配演算法(三)-KMP演算法字串匹配演算法KMP
- 字串匹配-BF演算法和KMP演算法字串匹配演算法KMP
- 字串匹配演算法之 BF 和 KMP 講解字串匹配演算法KMP
- 圖解KMP字串匹配演算法+程式碼實現圖解KMP字串匹配演算法
- KMP-字串KMP字串
- POJ--2406Power Strings+KMP求字串最小週期KMP字串
- 程式碼隨想錄演算法訓練營第9天 | 字串(KMP演算法) 28. 找出字串中第一個匹配項的下標 459.重複的子字串演算法字串KMP
- KMP模式匹配演算法KMP模式演算法
- manacher || 擴充套件kmp -- Best Reward HDU - 3613套件KMP
- 字串匹配字串匹配
- Laravel 路由匹配多個請求Laravel路由
- 模式匹配kmp演算法(c++)模式KMP演算法C++
- 28. 找出字串中第一個匹配項的下標 Golang實現字串Golang
- CSS 匹配第一個li元素CSS
- HDU 5831 Rikka with Parenthesis II (括號匹配)
- 【資料結構與演算法】字串匹配(Rabin-Karp 演算法和KMP 演算法)資料結構演算法字串匹配KMP
- 字串學習總結(Hash & Manacher & KMP)字串KMP
- JavaScript字串指定位置插入新字串JavaScript字串
- 字串匹配模式問題字串匹配模式
- Bitset 亂搞字串匹配字串匹配
- 調換任意字串位置字串
- 字串演算法--$\mathcal{KMP,Trie}$樹字串演算法KMP
- Python 細聊從暴力(BF)字串匹配演算法到 KMP 演算法之間的精妙變化Python字串匹配演算法KMP