给你两个字符串,一个母串,一个子串,请你找出子串第一次在母串中出现的位置。如果子串没有在母串中出现过,则输出-1。
例如子串ab在母串dceab中第一次出现的位置是3,而子串abc则在dceab中没有出现过。
收起
输入
第一行一个字符串(母串),保证每个字符都是小写字母。 第二行一个字符串(子串),保证每个字符都是小写字母。 保证两个字符串的长度都不超过10000,并且大于0。
输出
一行一个整数,表示子串第一次在母串中出现的位置。假如子串没有在母串中出现过,则输出-1。
输入样例
decdagee age
输出样例
4
代码如下:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
char f[10010],g[10010];
int main() {
cin>>f>>g;
int a,b=0,c=0,d[10000],h=1,j=0;
while(g[b]&&f[j]) //确定长度
{
if(g[b]==f[j]) {c=1;d[h]=j;b++;h++;j++;} //这三段就是确定位置,确定是不是子串。
else if(c==1&&g[b]!=f[j]){j++;c=0;h=1;b=0;}
else if(c==0&&g[b]!=f[j]) {j++;h=1;c=0;b=0;}
}
if(c==1) cout<<d[1]; //输出位置
else cout<<-1;
return 0;
}