曾经,ZYJ同窗很是喜欢密码学。有一天,他发现了一个很长很长的字符串S1。他很好奇那表明着什么,因而神奇的WL给了他另外一个字符串S2。可是很不幸的是,WL忘记跟他说是什么意思了。这个时候,ZYJ不得不求助与伟大的ZP。ZP笑了笑说,这个很神奇的,WL的意思是只要你找到她给你的字符串在那个神奇的字符串的位置,你就会有神奇的发现。ZYJ恍然大悟,原来如此,可是悲剧来了,他居然不知道怎么找。。。。是的,很囧是否是。因此这时候就须要化身为超级玛丽亚的你现身了,告诉他吧。。。。。。ios
首先输入一个n。表示有n组测试数据。测试
每组测试数据有两行。spa
第一行为字符串S1,长度不大于1000000。code
第二行为字符串S2,长度不大于10000,而且长度不小于2。blog
输出S2在S1的位置。若是有多个位置,只输出第一个位置。ip
若是找不到,就输出“::>_<::“(不输出双引号)。字符串
1 ASDFGDF DF
3
提示:此题看题意是让咱们来找模式串在主串中的位置,因此咱们能够两种方法:一种KMP,一种strstr,因此主要是KMP能弄明白,模板题,给的数据也很水。
代码实现以下(g++):
#include <stdio.h> #include <iostream> #include <string.h> #include <stdlib.h> #include <algorithm> #include <iostream> using namespace std; char a[1000010]; char b[10010]; int main() { int n; scanf("%d",&n); getchar(); while(n--) { gets(a); gets(b); char *ch=strstr(a,b); if(ch==NULL) cout<<"::>_<::"<<endl; else { int t=ch-a+1; cout<<t<<endl; } } return 0; } /*************************************************** Result: Accepted Take time: 16ms Take Memory: 1176KB ****************************************************/