数据结构实验之串一:KMP简单应用
Description 给定两个字符串string1和string2,判断string2是否为string1的子串。 Input 输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现空格。 Output 对于每组输入数据,若string2是string1的子串,则输出string2在string1中的位置,若不是,输出-1。 Sample Input abc a 123456 45 abc ddd Output 1 4 -1 Hint #include <iostream> #include <stdio.h> #include <string.h> using namespace std; char str1[1000001],str2[1000001]; int nex[1000001]; void getNext() { int i=0,j=-1; nex[0]=-1; while(str2[i]!='\0') { if(j==-1||str2[i]==str2[j]) { ++i; ++j; nex[i]=j; } else { j=nex[j]; } } } void kmp() { int len1,len2; len1=strlen