数据结构实验之串一: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
#include<iostream> #include<algorithm> #include<bits/stdc++.h> using namespace std; int main() { char s1[1000001], s2[1000001]; while(cin>>s1>>s2) { char *ch=strstr(s1,s2);//strstr(str1,str2) 函数用于判断字符串s2是否是s1的子串。如果是,则该函数返回s2在s1中首次出现的地址;否则,返回NULL。 if(ch==NULL) cout<<-1<<endl; else cout<<ch-s1+1<<endl; } return 0; }比如: char str2 = “cdef”; char str1 = “abcdefgh”; 则通过函数,将返回 strstr(str1,str2) = cdefgh;
如果str1不包含有str2。 char str2 = “cxef”; char str1 = “abcdefgh”; 则通过函数,将返回 strstr(str1,str2) = NULL;
