Problem Description
給定兩個字符串string1和string2,判斷string2是否爲string1的子串。
Input
輸入包含多組數據,每組測試數據包含兩行,第一行代表string1(長度小於1000000),第二行代表string2(長度小於1000000),string1和string2中保證不出現空格。
Output
對於每組輸入數據,若string2是string1的子串,則輸出string2在string1中的位置,若不是,輸出-1。
Example Input
abc
a
123456
45
abc
ddd
Example Output
1
4
-1
Hint
這道題的時間和內存限制都是一般題目的限制,所以我覺得不用kmp也可能會過,不出意料,果然AC了。
下面這個方法是用了 strstr() 函數
strstr是一種函數,從字符串str1中查找是否有符串str2,如果有,從str1中的str2位置起,返回str1的指針,如果沒有,返回null。這是360百科對strstr函數的說明。
特別注意的是,這個函數返回的是指針。
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
char s1[1000010],s2[1000010];
int main(){
while((scanf("%s%s",s1,s2))!=EOF){
char *ch=strstr(s1,s2);
if(ch=='\0')
cout<<"-1"<<endl;
else
cout<<ch-s1+1<<endl;
}
}