CODEVS1204寻找子串位置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CODEVS1204寻找子串位置相关的知识,希望对你有一定的参考价值。
Description
给出字符串a和字符串b,保证b是a的一个子串,请你输出b在a中第一次出现的位置。
Input
仅一行包含两个字符串a和b
Output
仅一行一个整数
Sample Input
abcd bc
Sample Output
2
Hint
字符串的长度均不超过100
Pascal用户请注意:两个字符串之间可能包含多个空格
#include<iostream> #include<cstring> using namespace std; char a[110],b[110]; int next[110],f[110]; int main() { cin>>a>>b; int n=strlen(a),m=strlen(b); next[0]=0; //求next数组↓ for (int i=1,j=0;i<=m;i++)//对b串自匹配 { while (j>0 && b[j]!=b[i]) j=next[j]; if (b[j]==b[i]) j++; next[i]=j; } //求next数组↑ for (int i=0,j=0;i<=n;i++)//a串与b串进行模式匹配 { while (j>0 && (j==m || a[i]!=b[j])) j=next[j]; if (a[i]==b[j]) j++; f[i]=j; } for (int i=0;i<=n;i++) if (f[i]==m) cout<<i-m+2; return 0; }
以上是关于CODEVS1204寻找子串位置的主要内容,如果未能解决你的问题,请参考以下文章