题目描述 Description
给出字符串a和字符串b,保证b是a的一个子串,请你输出b在a中第一次出现的位置。
输入描述 Input Description
仅一行包含两个字符串a和b
输出描述 Output Description
仅一行一个整数
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
string ch,ch1;
int a[105];
int main()
{
cin>>ch>>ch1;
int n=ch.length(),m=ch1.length();
ch=' '+ch;
ch1=' '+ch1;
int j=0;
for(int i=2;i<=m;i++)
{
while(j>0&&ch1[j+1]!=ch1[i])
j=a[j];
if(ch1[j+1]==ch1[i])
j++;
a[i]=j;
}
j=0;
for(int i=1;i<=n;i++)
{
while(j>0&&ch1[j+1]!=ch[i])
j=a[j];
if(ch1[j+1]==ch[i])
j++;
if(j==m)
{
printf("%d
",i-m+1);
}
}
return 0;
}